mycpp Code Generation

Measure the speedup from mycpp, and the resource usage.

Source code: oil/mycpp/examples

User Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
loops gen 0 0 291 0.000
modules gen 0 0 172 0.000
fib_recursive gen 7 7 886 0.008
fib_iter gen 8 4 900 0.008
asdl_generated gen 7 7 369 0.019
containers gen 4 11 110 0.035
parse gen 30 30 760 0.039
scoped_resource gen 44 34 1,032 0.042
files gen 4 4 77 0.049
tuple_return_value gen 16 15 194 0.085
classes gen 3 3 23 0.141
length gen 38 36 205 0.184
cartesian gen 88 79 335 0.263
escape gen 101 96 346 0.292
varargs gen 12 12 40 0.295
gc_stack_roots gen 2 2 4 0.442
cgi gen 250 253 517 0.485
control_flow gen 206 164 116 1.781

Max Resident Set Size (MB)

Lower ratios are better. We use MB (powers of 10), not MiB (powers of 2).

example name gen C++ C++-Souffle Python C++ : Python
classes gen 4.5 4.5 10.7 0.41
parse gen 3.8 3.9 7.7 0.49
cartesian gen 3.5 3.7 7.1 0.50
scoped_resource gen 3.5 3.7 7.1 0.50
gc_stack_roots gen 3.5 3.5 6.9 0.51
modules gen 3.7 3.7 7.1 0.52
asdl_generated gen 3.7 3.8 6.9 0.53
escape gen 3.7 3.7 6.9 0.53
loops gen 3.8 3.8 7.1 0.54
control_flow gen 3.8 3.7 6.9 0.55
fib_iter gen 3.8 3.5 6.9 0.55
fib_recursive gen 3.8 3.8 6.9 0.55
files gen 3.8 3.7 6.9 0.55
length gen 3.8 3.7 6.9 0.55
tuple_return_value gen 3.8 3.7 6.9 0.55
cgi gen 3.8 3.7 6.8 0.56
containers gen 28.6 28.5 47.6 0.60
varargs gen 5.4 5.5 6.9 0.77

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
classes gen 0 0 8 0.000
gc_stack_roots gen 0 0 8 0.000
parse gen 0 4 16 0.000
modules gen 2 2 12 0.168
escape gen 4 8 12 0.326
asdl_generated gen 4 4 8 0.446
containers gen 11 4 24 0.468
scoped_resource gen 4 11 8 0.496
loops gen 4 3 4 0.919
control_flow gen 4 0 4 0.993
cgi gen 4 0 4 1.000
cartesian gen 4 8 4 1.003
tuple_return_value gen 4 4 4 1.014
varargs gen 55 54 32 1.718
length gen 8 8 4 1.872
fib_recursive gen 4 4 0 inf
files gen 4 4 0 inf
fib_iter gen 0 4 0 NA

raw benchmark files