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
gc_stack_roots gen 0 0 0 12 0.000
modules gen 0 1 1 210 0.000
loops gen 1 3 2 310 0.004
fib_recursive gen 5 5 5 1,021 0.005
fib_iter gen 5 7 6 745 0.007
asdl_generated gen 9 8 9 510 0.017
scoped_resource gen 27 31 27 1,219 0.022
parse gen 23 26 31 892 0.026
containers gen 5 3 5 117 0.042
tuple_return_value gen 12 14 13 219 0.057
files gen 6 6 6 90 0.069
classes gen 2 2 0 32 0.071
length gen 31 31 30 224 0.139
cartesian gen 65 73 68 372 0.176
escape gen 82 92 85 387 0.211
cgi gen 183 180 185 655 0.279
varargs gen 14 15 21 23 0.613
control_flow gen 127 167 125 138 0.920

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.6 4.5 4.5 11.5 0.40
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.4 3.7 3.5 7.6 0.45
asdl_generated gen 3.5 3.4 3.4 7.7 0.46
cgi gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.8 3.9 3.9 8.3 0.46
fib_iter gen 3.7 3.7 3.7 7.9 0.47
length gen 3.7 3.7 3.8 7.9 0.47
modules gen 3.7 3.7 3.5 7.9 0.47
escape gen 3.7 3.5 3.7 7.7 0.47
fib_recursive gen 3.7 3.7 3.7 7.7 0.47
loops gen 3.7 3.5 3.8 7.7 0.47
scoped_resource gen 3.7 3.7 3.5 7.7 0.47
tuple_return_value gen 3.7 3.7 3.8 7.7 0.47
control_flow gen 3.8 3.8 3.8 7.9 0.48
files gen 3.9 3.8 3.9 7.9 0.50
containers gen 28.7 28.7 28.5 48.2 0.59
varargs gen 5.6 5.4 5.6 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 2 8 0.000
fib_recursive gen 0 1 1 4 0.000
files gen 0 0 0 5 0.000
parse gen 1 0 2 7 0.142
fib_iter gen 1 0 0 5 0.182
modules gen 1 0 0 6 0.200
control_flow gen 1 1 1 5 0.200
length gen 1 1 2 5 0.201
loops gen 1 0 0 5 0.223
gc_stack_roots gen 1 1 1 5 0.232
asdl_generated gen 1 2 1 4 0.267
scoped_resource gen 3 0 3 7 0.422
cgi gen 3 0 1 7 0.428
containers gen 8 10 8 15 0.522
varargs gen 10 9 4 15 0.671
tuple_return_value gen 2 2 1 3 0.695
cartesian gen 4 2 2 3 1.341
escape gen 5 3 1 3 1.679

raw benchmark files