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
fib_recursive gen 4 5 5 1,005 0.004
modules gen 1 0 1 200 0.006
loops gen 2 2 1 310 0.007
fib_iter gen 6 5 4 739 0.009
asdl_generated gen 10 9 10 514 0.019
scoped_resource gen 29 31 28 1,245 0.023
parse gen 24 25 21 919 0.026
classes gen 1 1 2 34 0.033
containers gen 4 5 7 107 0.036
tuple_return_value gen 11 16 14 225 0.050
files gen 5 5 5 93 0.055
gc_stack_roots gen 1 0 0 13 0.091
length gen 29 32 32 224 0.130
cartesian gen 66 69 67 359 0.182
escape gen 82 93 83 395 0.207
cgi gen 186 177 185 658 0.283
varargs gen 14 18 13 26 0.538
control_flow gen 127 176 124 140 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.5 11.6 0.37
asdl_generated gen 3.4 3.4 3.4 7.9 0.43
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
escape gen 3.5 3.4 3.7 7.9 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.8 3.8 7.7 0.46
scoped_resource gen 3.5 3.7 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
length gen 3.7 3.5 3.5 7.9 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
fib_iter gen 3.7 3.5 3.7 7.7 0.47
loops gen 3.7 3.7 3.7 7.7 0.47
modules gen 3.7 3.7 3.7 7.7 0.47
files gen 3.8 3.8 3.8 7.9 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
tuple_return_value gen 3.9 3.9 3.8 7.6 0.52
containers gen 28.8 28.3 28.7 48.4 0.60
varargs gen 5.6 5.6 5.6 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 1 0 2 0.000
control_flow gen 0 1 2 3 0.000
fib_iter gen 0 1 2 5 0.000
gc_stack_roots gen 0 1 1 4 0.000
loops gen 0 1 1 4 0.000
modules gen 0 1 0 7 0.000
parse gen 0 1 3 8 0.000
scoped_resource gen 1 1 1 5 0.199
cgi gen 1 1 2 5 0.201
classes gen 1 1 0 5 0.227
containers gen 9 8 6 27 0.325
files gen 1 1 1 3 0.339
fib_recursive gen 2 0 0 5 0.366
cartesian gen 3 6 2 4 0.744
varargs gen 10 6 11 10 0.999
length gen 3 0 0 3 1.003
tuple_return_value gen 3 0 0 3 1.032
escape gen 4 1 3 2 1.997

raw benchmark files