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 1 1 247 0.000
loops gen 1 3 3 357 0.002
fib_recursive gen 5 5 6 1,094 0.005
fib_iter gen 7 5 6 952 0.007
asdl_generated gen 8 8 8 523 0.015
scoped_resource gen 27 27 28 1,386 0.019
parse gen 22 22 23 955 0.023
files gen 5 5 7 105 0.046
classes gen 2 1 3 33 0.053
tuple_return_value gen 14 15 13 250 0.056
containers gen 8 6 5 124 0.067
gc_stack_roots gen 1 1 1 15 0.091
length gen 35 34 33 244 0.142
cartesian gen 67 77 72 398 0.169
escape gen 91 102 92 438 0.208
cgi gen 258 249 260 740 0.349
varargs gen 12 14 24 30 0.398
control_flow gen 136 176 135 149 0.913

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
escape gen 3.4 3.5 3.4 7.7 0.44
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.5 7.6 0.45
modules gen 3.4 3.4 3.5 7.6 0.45
cartesian gen 3.5 3.5 3.4 7.7 0.46
cgi gen 3.5 3.4 3.5 7.7 0.46
fib_iter gen 3.5 3.5 3.5 7.6 0.47
files gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
loops gen 3.5 3.5 3.7 7.5 0.47
tuple_return_value gen 3.7 3.8 3.7 7.7 0.47
parse gen 3.8 3.8 3.9 8.0 0.47
fib_recursive gen 3.7 3.7 3.5 7.6 0.48
length gen 3.7 3.4 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.7 0.49
containers gen 28.5 28.5 28.5 48.4 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
fib_iter gen 0 2 1 8 0.000
gc_stack_roots gen 0 0 0 5 0.000
classes gen 1 2 0 9 0.098
tuple_return_value gen 1 2 2 9 0.111
fib_recursive gen 1 1 0 6 0.171
modules gen 1 0 0 8 0.172
containers gen 5 8 9 27 0.194
control_flow gen 1 3 0 5 0.200
loops gen 2 0 0 8 0.208
asdl_generated gen 2 2 2 9 0.221
cgi gen 2 3 0 6 0.333
scoped_resource gen 3 4 2 8 0.371
parse gen 4 4 2 10 0.392
length gen 4 2 6 7 0.567
files gen 2 2 0 3 0.641
escape gen 7 3 6 7 0.999
varargs gen 27 25 14 26 1.034
cartesian gen 8 3 3 7 1.145

raw benchmark files