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 234 0.000
fib_recursive gen 5 5 5 1,087 0.005
fib_iter gen 6 4 6 959 0.006
loops gen 2 3 3 389 0.006
asdl_generated gen 9 9 7 510 0.018
scoped_resource gen 24 28 29 1,372 0.018
parse gen 25 25 23 957 0.026
tuple_return_value gen 11 14 14 252 0.043
containers gen 6 8 4 134 0.046
classes gen 2 2 0 30 0.059
files gen 6 6 6 98 0.066
gc_stack_roots gen 2 0 1 13 0.121
length gen 35 32 36 246 0.142
cartesian gen 69 72 72 395 0.175
escape gen 90 101 94 427 0.211
cgi gen 259 248 258 736 0.352
varargs gen 17 24 17 24 0.698
control_flow gen 135 176 132 141 0.960

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.5 4.3 11.6 0.38
cartesian gen 3.4 3.4 3.4 7.7 0.44
cgi gen 3.4 3.4 3.4 7.7 0.44
loops gen 3.4 3.5 3.5 7.6 0.45
asdl_generated gen 3.5 3.4 3.4 7.7 0.46
gc_stack_roots gen 3.5 3.3 3.3 7.7 0.46
escape gen 3.5 3.4 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
tuple_return_value gen 3.5 3.7 3.7 7.6 0.47
control_flow gen 3.7 3.7 3.8 7.6 0.48
fib_iter gen 3.7 3.5 3.7 7.6 0.48
fib_recursive gen 3.7 3.5 3.4 7.6 0.48
files gen 3.7 3.8 3.8 7.6 0.48
length gen 3.7 3.5 3.7 7.6 0.48
modules gen 3.7 3.5 3.5 7.6 0.48
parse gen 3.9 3.8 3.7 8.0 0.49
containers gen 28.5 28.3 28.5 48.4 0.59
varargs gen 5.5 5.2 5.5 7.5 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 2 3 11 0.000
files gen 0 1 1 9 0.000
gc_stack_roots gen 0 1 1 7 0.000
loops gen 0 0 0 9 0.000
parse gen 0 2 2 6 0.000
classes gen 1 1 3 12 0.074
fib_iter gen 1 3 1 10 0.101
asdl_generated gen 1 1 3 7 0.142
fib_recursive gen 1 1 1 7 0.148
modules gen 1 1 0 6 0.234
containers gen 7 6 9 14 0.518
length gen 4 4 3 7 0.569
tuple_return_value gen 4 3 1 6 0.663
varargs gen 22 14 21 32 0.678
scoped_resource gen 6 4 1 8 0.731
cgi gen 3 3 3 4 0.750
cartesian gen 6 7 3 7 0.859
escape gen 8 4 5 6 1.332

raw benchmark files