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 16 0.000
loops gen 1 3 3 369 0.003
fib_recursive gen 5 6 6 1,100 0.005
modules gen 1 0 1 235 0.006
fib_iter gen 6 6 6 978 0.006
asdl_generated gen 10 9 9 521 0.019
scoped_resource gen 29 29 27 1,386 0.021
parse gen 23 25 21 960 0.024
classes gen 1 2 2 33 0.028
containers gen 6 7 5 136 0.044
tuple_return_value gen 12 16 14 250 0.048
files gen 7 6 5 99 0.066
length gen 36 34 35 256 0.140
cartesian gen 64 72 97 413 0.155
escape gen 89 100 90 429 0.207
cgi gen 259 247 257 749 0.345
varargs gen 15 15 20 29 0.520
control_flow gen 134 178 135 146 0.916

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.5 4.5 11.5 0.39
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
cartesian gen 3.4 3.5 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
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.4 3.4 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
fib_iter gen 3.7 3.7 3.5 7.6 0.48
fib_recursive gen 3.7 3.7 3.7 7.6 0.48
files gen 3.7 3.8 3.8 7.6 0.48
loops gen 3.7 3.5 3.5 7.6 0.48
modules gen 3.7 3.7 3.5 7.6 0.48
parse gen 3.9 3.8 3.7 8.1 0.48
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.7 28.3 28.5 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
asdl_generated gen 0 1 1 5 0.000
modules gen 0 1 0 8 0.000
files gen 1 1 2 9 0.103
fib_iter gen 1 1 1 9 0.112
loops gen 1 0 0 8 0.158
classes gen 2 1 1 11 0.167
fib_recursive gen 1 0 0 5 0.210
control_flow gen 2 1 1 8 0.249
containers gen 8 7 9 30 0.266
scoped_resource gen 2 3 3 7 0.282
gc_stack_roots gen 1 0 1 5 0.286
parse gen 2 2 4 7 0.290
length gen 3 2 3 10 0.299
tuple_return_value gen 3 1 1 8 0.378
cgi gen 2 6 5 3 0.669
escape gen 8 5 8 11 0.733
varargs gen 24 23 18 29 0.832
cartesian gen 9 7 4 8 1.125

raw benchmark files