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 1 0 13 0.000
loops gen 1 2 2 358 0.002
modules gen 1 0 1 235 0.003
fib_recursive gen 5 6 6 1,104 0.005
fib_iter gen 6 6 6 970 0.006
scoped_resource gen 26 33 29 1,347 0.019
asdl_generated gen 10 9 8 515 0.019
classes gen 1 0 1 35 0.026
parse gen 25 21 22 950 0.026
containers gen 5 7 6 132 0.037
tuple_return_value gen 14 16 11 259 0.054
files gen 6 6 7 103 0.057
length gen 35 41 35 239 0.145
cartesian gen 69 67 69 408 0.169
escape gen 95 101 90 434 0.219
cgi gen 261 246 259 741 0.352
varargs gen 18 14 13 33 0.532
control_flow gen 134 178 135 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.5 11.5 0.39
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
length gen 3.4 3.7 3.7 7.6 0.45
cartesian gen 3.4 3.4 3.4 7.5 0.46
asdl_generated gen 3.5 3.3 3.4 7.7 0.46
escape gen 3.5 3.4 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.4 7.6 0.47
fib_iter gen 3.5 3.7 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.5 3.7 7.6 0.47
parse gen 3.8 3.9 3.8 8.0 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
modules gen 3.7 3.5 3.4 7.6 0.48
tuple_return_value gen 3.8 3.8 3.7 7.7 0.49
files gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.4 28.5 28.5 48.2 0.59
varargs gen 5.5 5.4 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 1 2 11 0.000
modules gen 1 1 0 8 0.091
parse gen 1 6 4 8 0.125
fib_recursive gen 1 0 0 7 0.128
tuple_return_value gen 1 1 4 7 0.144
loops gen 2 2 1 11 0.156
files gen 1 1 0 6 0.162
gc_stack_roots gen 1 1 1 8 0.174
classes gen 2 3 2 9 0.203
cgi gen 2 6 2 9 0.223
fib_iter gen 1 1 1 4 0.255
escape gen 3 5 9 7 0.429
containers gen 9 7 8 20 0.444
length gen 4 7 3 7 0.565
control_flow gen 3 1 1 5 0.594
scoped_resource gen 5 0 2 7 0.701
varargs gen 21 24 26 25 0.819
cartesian gen 6 11 6 6 1.000

raw benchmark files