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 0 0 230 0.000
fib_recursive gen 4 5 5 1,100 0.004
loops gen 2 3 1 370 0.005
fib_iter gen 6 6 7 941 0.006
containers gen 3 9 7 259 0.011
asdl_generated gen 10 8 9 523 0.019
scoped_resource gen 28 26 27 1,361 0.021
parse gen 23 24 24 965 0.023
classes gen 1 1 1 34 0.026
files gen 5 5 6 99 0.049
tuple_return_value gen 13 16 14 248 0.051
gc_stack_roots gen 1 0 0 13 0.053
length gen 35 33 32 242 0.146
cartesian gen 70 74 70 395 0.177
escape gen 93 99 94 430 0.217
cgi gen 258 233 257 735 0.351
varargs gen 18 17 19 28 0.638
control_flow gen 134 179 135 144 0.925

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.3 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.5 7.6 0.45
cartesian gen 3.5 3.5 3.4 7.7 0.46
escape gen 3.5 3.5 3.4 7.7 0.46
fib_iter gen 3.5 3.7 3.5 7.7 0.46
loops gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.5 0.47
length gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
modules gen 3.7 3.7 3.5 7.6 0.48
tuple_return_value gen 3.8 3.7 3.8 7.7 0.49
control_flow gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.5 5.6 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 2 1 5 0.000
gc_stack_roots gen 1 1 1 8 0.087
fib_iter gen 1 1 0 10 0.101
loops gen 1 1 2 8 0.106
modules gen 1 1 1 10 0.145
classes gen 2 1 1 10 0.178
files gen 2 2 1 8 0.241
tuple_return_value gen 2 1 1 8 0.244
scoped_resource gen 2 6 3 8 0.253
fib_recursive gen 2 1 1 8 0.257
cgi gen 2 5 3 6 0.334
containers gen 11 5 7 26 0.414
parse gen 3 3 1 7 0.421
control_flow gen 3 2 1 7 0.426
escape gen 4 4 5 6 0.663
varargs gen 20 21 19 29 0.684
cartesian gen 5 7 5 7 0.715
length gen 6 4 7 5 1.176

raw benchmark files