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
fib_recursive gen 4 5 6 1,097 0.004
modules gen 1 0 0 233 0.006
loops gen 3 2 2 370 0.007
fib_iter gen 7 7 6 948 0.008
asdl_generated gen 8 8 7 510 0.016
scoped_resource gen 28 27 28 1,388 0.020
parse gen 21 26 24 955 0.022
containers gen 5 5 5 141 0.035
tuple_return_value gen 12 13 14 251 0.048
files gen 6 5 4 100 0.059
classes gen 3 1 2 32 0.083
gc_stack_roots gen 1 1 1 11 0.128
length gen 35 38 36 243 0.146
cartesian gen 67 69 76 402 0.167
escape gen 92 98 91 432 0.212
cgi gen 259 250 256 730 0.355
varargs gen 15 14 14 22 0.684
control_flow gen 134 177 134 150 0.894

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.3 11.5 0.39
asdl_generated gen 3.3 3.3 3.3 7.6 0.43
gc_stack_roots gen 3.3 3.3 3.5 7.6 0.43
escape gen 3.4 3.5 3.5 7.7 0.44
cgi gen 3.4 3.4 3.5 7.6 0.45
cartesian gen 3.5 3.4 3.4 7.7 0.46
fib_iter gen 3.5 3.7 3.5 7.7 0.46
length gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.7 3.7 8.1 0.47
control_flow gen 3.7 3.7 3.8 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
files gen 3.8 3.5 3.8 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.3 28.3 28.3 48.3 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
classes gen 0 1 1 11 0.000
fib_iter gen 0 0 1 6 0.000
gc_stack_roots gen 0 1 0 10 0.000
loops gen 0 1 1 4 0.000
modules gen 0 1 1 9 0.000
files gen 1 2 3 8 0.122
control_flow gen 1 2 1 7 0.142
scoped_resource gen 2 5 2 8 0.248
fib_recursive gen 2 1 0 7 0.256
parse gen 4 1 2 14 0.279
asdl_generated gen 2 2 3 7 0.284
cgi gen 3 1 5 10 0.299
tuple_return_value gen 3 4 1 9 0.333
containers gen 9 9 9 22 0.406
length gen 3 1 3 7 0.434
escape gen 5 7 7 8 0.628
varargs gen 24 25 24 36 0.669
cartesian gen 6 12 5 6 1.001

raw benchmark files