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
classes gen 0 1 1 32 0.000
gc_stack_roots gen 0 0 1 16 0.000
fib_recursive gen 5 5 6 1,121 0.005
loops gen 2 3 3 354 0.005
fib_iter gen 5 7 7 955 0.006
modules gen 2 0 0 238 0.007
asdl_generated gen 7 8 6 516 0.014
containers gen 2 6 10 138 0.014
scoped_resource gen 29 31 28 1,359 0.021
parse gen 25 24 21 964 0.025
tuple_return_value gen 12 12 11 251 0.048
files gen 7 6 5 98 0.069
length gen 33 30 30 246 0.134
cartesian gen 69 75 68 390 0.178
escape gen 92 97 93 423 0.218
cgi gen 256 248 259 749 0.342
varargs gen 14 19 13 26 0.534
control_flow gen 134 179 136 148 0.902

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
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.4 3.4 3.5 7.6 0.45
cgi gen 3.4 3.4 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
fib_iter gen 3.5 3.5 3.7 7.7 0.46
length gen 3.5 3.5 3.7 7.7 0.46
escape gen 3.5 3.4 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.4 7.6 0.47
parse gen 3.8 3.8 3.7 8.1 0.47
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.7 3.7 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.7 28.7 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
files gen 0 1 2 9 0.000
modules gen 0 1 1 8 0.000
scoped_resource gen 1 1 3 13 0.076
parse gen 1 4 5 11 0.089
loops gen 1 1 0 9 0.095
fib_recursive gen 1 1 0 7 0.149
classes gen 3 2 1 10 0.278
control_flow gen 2 3 0 6 0.332
asdl_generated gen 3 2 4 9 0.333
fib_iter gen 2 0 0 5 0.359
gc_stack_roots gen 1 1 0 4 0.360
tuple_return_value gen 3 5 5 6 0.505
containers gen 12 8 4 23 0.515
varargs gen 26 20 26 35 0.737
length gen 6 7 8 8 0.751
cartesian gen 6 5 8 8 0.755
escape gen 7 8 6 9 0.781
cgi gen 5 4 2 5 1.001

raw benchmark files