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 1 1 0 235 0.003
fib_recursive gen 5 6 6 1,187 0.005
fib_iter gen 5 6 7 973 0.005
loops gen 3 2 3 366 0.007
asdl_generated gen 8 9 8 510 0.016
scoped_resource gen 25 28 27 1,349 0.018
parse gen 22 23 21 964 0.023
classes gen 1 2 1 31 0.029
containers gen 5 6 4 126 0.039
gc_stack_roots gen 1 1 1 14 0.048
tuple_return_value gen 15 16 13 247 0.061
files gen 7 6 6 97 0.069
length gen 35 37 34 240 0.146
cartesian gen 69 78 72 384 0.181
escape gen 90 98 96 431 0.210
cgi gen 259 236 257 761 0.340
varargs gen 24 16 18 26 0.909
control_flow gen 137 177 135 146 0.943

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
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
asdl_generated gen 3.4 3.3 3.3 7.7 0.44
cgi gen 3.5 3.5 3.4 7.7 0.46
modules gen 3.5 3.5 3.4 7.7 0.46
scoped_resource gen 3.5 3.5 3.4 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.5 3.7 3.7 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
files gen 3.5 3.8 3.8 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.8 3.7 8.1 0.47
loops gen 3.7 3.5 3.5 7.7 0.47
tuple_return_value gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.4 28.5 48.2 0.59
varargs gen 5.4 5.5 5.4 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 2 1 8 0.000
files gen 0 1 1 9 0.000
loops gen 0 2 0 7 0.000
tuple_return_value gen 0 1 2 7 0.000
modules gen 1 0 1 8 0.089
gc_stack_roots gen 1 0 1 6 0.113
classes gen 2 1 2 12 0.150
fib_recursive gen 1 0 0 5 0.181
fib_iter gen 2 1 0 8 0.250
asdl_generated gen 2 1 2 6 0.330
cgi gen 2 3 3 6 0.332
containers gen 9 8 10 25 0.358
parse gen 3 4 4 8 0.365
length gen 3 1 4 7 0.431
varargs gen 15 23 21 30 0.492
scoped_resource gen 5 3 3 9 0.570
cartesian gen 6 2 5 7 0.860
escape gen 8 5 1 9 0.894

raw benchmark files