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 10 0.000
modules gen 0 0 1 236 0.000
fib_recursive gen 5 6 5 1,090 0.005
loops gen 2 3 1 344 0.007
fib_iter gen 7 5 7 959 0.007
asdl_generated gen 7 8 10 512 0.014
scoped_resource gen 23 28 29 1,394 0.016
containers gen 3 7 4 130 0.024
parse gen 24 24 22 965 0.025
tuple_return_value gen 14 14 13 253 0.055
files gen 6 6 5 96 0.059
classes gen 3 2 2 32 0.085
length gen 35 32 36 239 0.146
cartesian gen 66 73 73 402 0.164
escape gen 89 102 95 430 0.208
cgi gen 257 249 257 728 0.353
varargs gen 15 18 18 25 0.596
control_flow gen 136 178 132 142 0.956

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.6 0.45
cgi gen 3.4 3.5 3.7 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
parse gen 3.7 3.9 3.8 8.1 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.7 3.5 7.7 0.46
scoped_resource gen 3.5 3.4 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.7 3.7 7.6 0.47
length gen 3.7 3.7 3.5 7.7 0.47
tuple_return_value gen 3.7 3.7 3.8 7.5 0.49
control_flow gen 3.8 3.7 3.8 7.7 0.49
files gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.5 28.5 28.5 48.1 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 1 12 0.000
fib_iter gen 0 2 0 10 0.000
loops gen 0 0 2 9 0.000
files gen 1 1 2 12 0.095
parse gen 1 3 4 10 0.101
fib_recursive gen 1 0 1 10 0.104
control_flow gen 1 0 4 9 0.111
gc_stack_roots gen 1 1 1 10 0.136
tuple_return_value gen 1 3 2 7 0.143
modules gen 1 1 0 7 0.207
cgi gen 2 3 2 8 0.250
asdl_generated gen 3 2 0 8 0.372
containers gen 10 8 10 21 0.495
varargs gen 24 21 21 32 0.745
escape gen 8 2 2 10 0.795
length gen 4 4 3 5 0.797
cartesian gen 9 7 3 10 0.903
scoped_resource gen 7 3 2 5 1.396

raw benchmark files