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 2 1 238 0.000
fib_recursive gen 5 6 6 1,106 0.004
fib_iter gen 7 6 7 1,135 0.006
loops gen 3 2 3 360 0.007
asdl_generated gen 8 7 8 506 0.016
scoped_resource gen 25 29 26 1,359 0.018
parse gen 22 25 25 969 0.022
classes gen 1 2 1 32 0.029
containers gen 6 4 7 138 0.044
files gen 5 5 5 101 0.048
tuple_return_value gen 14 16 13 248 0.057
gc_stack_roots gen 1 1 0 13 0.111
length gen 35 34 36 242 0.142
cartesian gen 73 73 73 393 0.185
escape gen 91 102 99 427 0.213
cgi gen 258 251 258 737 0.349
varargs gen 12 14 11 33 0.370
control_flow gen 135 179 133 156 0.868

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.3 4.2 11.5 0.38
asdl_generated gen 3.4 3.4 3.3 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
cgi gen 3.4 3.4 3.5 7.6 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
fib_iter gen 3.5 3.5 3.7 7.7 0.46
loops gen 3.5 3.7 3.5 7.7 0.46
escape gen 3.5 3.4 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
files gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.8 3.7 8.0 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
length gen 3.7 3.5 3.7 7.6 0.48
scoped_resource 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.7 7.6 0.50
containers gen 28.4 28.5 28.6 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
control_flow gen 0 0 3 10 0.000
fib_iter gen 0 1 0 7 0.000
gc_stack_roots gen 0 1 1 8 0.000
loops gen 0 2 0 7 0.000
classes gen 2 1 2 12 0.157
asdl_generated gen 2 3 2 10 0.200
tuple_return_value gen 1 1 2 5 0.201
fib_recursive gen 2 0 0 9 0.203
modules gen 1 0 0 7 0.211
files gen 2 2 2 7 0.278
containers gen 8 10 7 25 0.322
cartesian gen 3 7 2 9 0.337
cgi gen 3 1 2 7 0.428
parse gen 4 2 1 8 0.491
escape gen 5 3 0 8 0.625
scoped_resource gen 6 3 5 9 0.663
length gen 5 4 3 7 0.724
varargs gen 27 25 28 26 1.057

raw benchmark files