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
classes gen 0 1 1 35 0.000
gc_stack_roots gen 0 0 0 15 0.000
fib_recursive gen 4 5 6 1,098 0.004
loops gen 2 3 1 362 0.005
modules gen 1 1 1 234 0.006
fib_iter gen 6 6 6 950 0.007
asdl_generated gen 6 7 8 523 0.011
scoped_resource gen 26 30 26 1,341 0.019
parse gen 24 26 23 955 0.026
containers gen 5 5 5 124 0.042
tuple_return_value gen 14 15 13 245 0.057
files gen 7 5 6 98 0.069
length gen 35 31 35 240 0.145
cartesian gen 67 74 63 445 0.150
escape gen 87 99 98 425 0.205
cgi gen 253 248 258 776 0.325
varargs gen 17 23 19 29 0.593
control_flow gen 132 177 132 138 0.957

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
asdl_generated gen 3.3 3.3 3.4 7.6 0.43
cartesian gen 3.4 3.5 3.5 7.6 0.45
cgi gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
escape gen 3.5 3.4 3.5 7.7 0.46
loops gen 3.5 3.7 3.5 7.7 0.46
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
fib_iter gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
files gen 3.7 3.7 3.7 7.6 0.48
modules gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.5 28.5 48.2 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
files gen 0 2 1 10 0.000
modules gen 0 0 1 6 0.000
fib_iter gen 1 1 1 12 0.087
loops gen 1 0 2 8 0.104
tuple_return_value gen 1 1 2 8 0.126
parse gen 1 1 2 7 0.145
gc_stack_roots gen 1 1 1 5 0.271
containers gen 8 9 9 29 0.288
classes gen 3 1 2 8 0.335
fib_recursive gen 2 1 0 5 0.357
control_flow gen 5 2 3 12 0.417
length gen 4 5 3 8 0.496
scoped_resource gen 4 1 4 8 0.497
cgi gen 5 3 3 9 0.557
asdl_generated gen 4 3 2 7 0.563
varargs gen 21 15 20 27 0.786
cartesian gen 8 6 12 8 0.998
escape gen 11 5 2 6 1.828

raw benchmark files