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 0 241 0.000
fib_recursive gen 5 5 5 1,105 0.005
fib_iter gen 5 4 5 952 0.006
loops gen 3 2 1 361 0.007
asdl_generated gen 9 9 7 523 0.017
scoped_resource gen 27 30 30 1,363 0.019
parse gen 22 26 22 956 0.023
classes gen 1 1 3 34 0.027
containers gen 6 6 3 127 0.048
files gen 5 6 6 100 0.049
tuple_return_value gen 13 16 11 256 0.051
gc_stack_roots gen 1 1 0 14 0.102
length gen 35 33 34 236 0.148
cartesian gen 69 74 69 396 0.173
escape gen 93 100 97 444 0.210
cgi gen 259 250 260 735 0.352
varargs gen 17 14 15 31 0.551
control_flow gen 134 178 134 149 0.903

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.3 11.5 0.39
asdl_generated gen 3.3 3.3 3.4 7.7 0.42
cartesian gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
tuple_return_value gen 3.7 3.7 3.8 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
length gen 3.7 3.4 3.7 7.6 0.48
loops gen 3.7 3.5 3.5 7.6 0.48
files gen 3.8 3.8 3.7 7.7 0.49
containers gen 28.5 28.3 28.5 48.2 0.59
varargs gen 5.5 5.5 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 1 7 0.000
loops gen 0 2 2 8 0.000
control_flow gen 1 1 2 8 0.125
asdl_generated gen 1 1 3 7 0.144
fib_recursive gen 1 1 1 6 0.149
classes gen 2 1 0 12 0.154
modules gen 1 1 1 8 0.182
fib_iter gen 2 3 2 9 0.200
files gen 2 1 1 8 0.242
cgi gen 3 3 2 12 0.250
tuple_return_value gen 2 1 4 7 0.289
containers gen 8 8 11 25 0.322
scoped_resource gen 4 4 1 10 0.393
length gen 4 5 3 10 0.398
parse gen 4 1 4 9 0.438
cartesian gen 5 6 6 10 0.497
varargs gen 22 25 23 28 0.790
escape gen 4 7 1 5 0.800

raw benchmark files