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 1 0 240 0.000
loops gen 2 2 1 358 0.005
fib_recursive gen 5 5 6 1,091 0.005
fib_iter gen 6 7 6 984 0.006
asdl_generated gen 9 9 10 515 0.018
scoped_resource gen 29 28 25 1,367 0.021
parse gen 25 25 22 948 0.027
classes gen 1 1 1 38 0.036
tuple_return_value gen 13 16 13 249 0.054
containers gen 7 5 6 127 0.056
files gen 6 7 6 100 0.059
gc_stack_roots gen 1 0 1 11 0.135
length gen 33 35 36 239 0.138
cartesian gen 70 73 69 396 0.176
escape gen 90 102 94 427 0.212
cgi gen 253 251 255 742 0.341
varargs gen 12 18 24 30 0.393
control_flow gen 137 176 133 147 0.933

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.2 4.5 4.3 11.5 0.37
asdl_generated gen 3.3 3.4 3.4 7.6 0.43
gc_stack_roots gen 3.4 3.5 3.3 7.6 0.45
files gen 3.5 3.7 3.7 7.7 0.46
modules gen 3.5 3.7 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
loops gen 3.5 3.5 3.7 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.7 7.7 0.47
parse gen 3.8 3.8 3.7 8.0 0.47
length gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.4 28.6 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 3 2 8 0.000
gc_stack_roots gen 0 1 0 12 0.000
scoped_resource gen 1 5 5 12 0.084
parse gen 1 2 4 11 0.092
loops gen 1 2 2 7 0.123
files gen 1 0 1 7 0.143
asdl_generated gen 1 2 1 7 0.150
fib_recursive gen 1 2 0 6 0.175
modules gen 1 0 1 7 0.208
classes gen 1 2 2 6 0.225
containers gen 7 11 8 29 0.247
tuple_return_value gen 2 2 2 8 0.259
fib_iter gen 1 0 1 3 0.340
length gen 6 2 2 11 0.546
cgi gen 7 3 5 9 0.776
escape gen 8 5 6 8 1.004
varargs gen 29 21 16 28 1.018
cartesian gen 6 8 7 5 1.196

raw benchmark files