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 0 0 1 238 0.000
fib_recursive gen 5 6 6 1,098 0.005
fib_iter gen 6 6 5 961 0.006
loops gen 2 1 1 369 0.007
asdl_generated gen 8 7 6 513 0.015
scoped_resource gen 27 30 26 1,336 0.020
parse gen 23 25 25 941 0.025
classes gen 1 0 1 34 0.026
containers gen 6 5 9 124 0.046
tuple_return_value gen 13 15 13 252 0.052
files gen 6 5 6 100 0.058
gc_stack_roots gen 1 0 1 16 0.083
length gen 35 35 37 245 0.142
cartesian gen 70 73 68 400 0.175
escape gen 92 102 92 430 0.214
cgi gen 254 246 259 735 0.345
varargs gen 17 17 12 31 0.553
control_flow gen 133 181 136 147 0.908

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.3 4.5 4.3 11.5 0.38
escape gen 3.4 3.5 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
cartesian gen 3.5 3.4 3.4 7.7 0.46
cgi gen 3.5 3.4 3.5 7.7 0.46
gc_stack_roots gen 3.5 3.4 3.3 7.7 0.46
fib_recursive gen 3.5 3.7 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.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.7 3.7 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
tuple_return_value gen 3.7 3.5 3.7 7.7 0.47
fib_iter gen 3.7 3.5 3.7 7.6 0.48
files gen 3.7 3.8 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.3 28.5 28.5 48.2 0.59
varargs gen 5.5 5.5 5.4 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 1 0 4 0.000
loops gen 0 2 2 6 0.000
fib_iter gen 1 1 2 9 0.112
fib_recursive gen 1 0 0 7 0.128
files gen 1 2 1 7 0.138
classes gen 2 3 2 9 0.194
modules gen 1 1 0 5 0.274
parse gen 2 2 0 7 0.278
containers gen 8 9 5 26 0.296
asdl_generated gen 2 3 4 6 0.330
scoped_resource gen 3 1 4 8 0.371
control_flow gen 3 0 0 6 0.498
cartesian gen 5 6 9 8 0.624
length gen 4 1 2 6 0.661
tuple_return_value gen 2 2 2 3 0.665
cgi gen 6 6 3 8 0.749
varargs gen 21 22 26 26 0.815
escape gen 6 3 6 7 0.850

raw benchmark files