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 11 0.000
fib_recursive gen 4 5 5 1,120 0.004
modules gen 1 0 1 233 0.006
fib_iter gen 6 6 5 962 0.006
loops gen 3 2 3 367 0.007
asdl_generated gen 9 7 8 551 0.016
containers gen 2 6 8 121 0.016
scoped_resource gen 27 27 27 1,379 0.020
parse gen 25 27 23 951 0.027
classes gen 1 1 1 32 0.028
files gen 5 5 6 100 0.048
tuple_return_value gen 14 15 10 248 0.056
length gen 36 31 34 243 0.147
cartesian gen 72 75 67 387 0.185
escape gen 97 100 98 421 0.230
cgi gen 267 244 260 727 0.367
varargs gen 17 20 16 33 0.502
control_flow gen 136 179 138 147 0.921

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.4 0.38
asdl_generated gen 3.3 3.4 3.3 7.7 0.42
escape 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
fib_iter gen 3.5 3.5 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
cgi gen 3.5 3.7 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.7 8.0 0.47
files gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.6 0.50
tuple_return_value gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.4 5.4 5.5 7.7 0.69

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 0 0 8 0.000
loops gen 0 1 0 6 0.000
modules gen 0 1 1 8 0.000
parse gen 0 0 2 9 0.000
tuple_return_value gen 1 2 5 9 0.111
gc_stack_roots gen 1 1 1 10 0.140
asdl_generated gen 1 3 2 7 0.141
escape gen 1 5 3 7 0.143
fib_iter gen 1 1 2 7 0.143
classes gen 2 2 1 10 0.178
fib_recursive gen 2 1 1 10 0.179
cgi gen 2 7 2 8 0.249
files gen 2 2 1 6 0.321
scoped_resource gen 3 5 3 9 0.335
containers gen 12 8 5 30 0.390
length gen 3 6 4 7 0.424
cartesian gen 4 5 8 8 0.498
varargs gen 22 18 22 22 0.975

raw benchmark files