mycpp Code Generation

Measure the speedup from mycpp, and the resource usage.

Source code: oils/mycpp/examples

User Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
modules gen 1 1 0 233 0.003
loops gen 2 2 2 359 0.005
fib_recursive gen 5 6 5 1,064 0.005
fib_iter gen 6 6 5 943 0.006
asdl_generated gen 7 8 9 512 0.014
scoped_resource gen 27 29 26 1,371 0.019
parse gen 24 24 23 953 0.025
classes gen 1 1 2 34 0.026
containers gen 5 5 7 127 0.039
files gen 5 5 4 102 0.047
tuple_return_value gen 13 16 13 249 0.052
gc_stack_roots gen 1 1 1 16 0.085
length gen 34 37 32 252 0.134
cartesian gen 67 74 71 402 0.166
escape gen 91 92 95 424 0.214
varargs gen 9 21 17 31 0.289
cgi gen 266 248 258 736 0.361
control_flow gen 133 179 134 148 0.901

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++-NoSouffle C++-Souffle Python C++ : Python
classes gen 4.5 4.3 4.5 11.5 0.39
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
cartesian gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.4 3.5 3.5 7.6 0.45
scoped_resource gen 3.5 3.7 3.5 7.7 0.46
cgi gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.5 3.4 3.5 7.6 0.47
files gen 3.5 3.8 3.7 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.5 3.7 3.7 7.6 0.47
parse gen 3.8 3.7 3.8 8.1 0.47
fib_recursive gen 3.7 3.5 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.7 3.7 7.7 0.49
containers gen 28.5 28.5 28.3 48.4 0.59
varargs gen 5.5 5.4 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 0 4 0.000
modules gen 1 1 1 7 0.103
loops gen 1 1 1 8 0.105
fib_iter gen 1 1 2 7 0.144
fib_recursive gen 1 0 1 6 0.175
classes gen 2 2 1 9 0.196
parse gen 2 3 2 9 0.228
files gen 2 2 2 8 0.242
control_flow gen 2 0 1 6 0.334
containers gen 9 9 7 26 0.347
cgi gen 3 3 3 8 0.375
asdl_generated gen 3 2 1 7 0.424
tuple_return_value gen 2 1 2 4 0.499
escape gen 6 11 4 9 0.667
length gen 5 0 7 6 0.828
cartesian gen 6 6 2 7 0.853
varargs gen 30 17 21 25 1.193
scoped_resource gen 3 2 4 2 1.478

raw benchmark files