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 0 1 11 0.000
loops gen 1 2 3 366 0.002
fib_recursive gen 4 6 6 1,102 0.004
fib_iter gen 4 7 6 963 0.005
modules gen 1 0 1 236 0.006
asdl_generated gen 8 8 6 520 0.015
scoped_resource gen 27 29 28 1,359 0.020
parse gen 23 21 18 963 0.024
containers gen 6 5 4 131 0.044
files gen 5 6 5 99 0.049
tuple_return_value gen 12 14 13 245 0.049
classes gen 2 2 3 31 0.059
length gen 32 31 33 240 0.132
cartesian gen 72 75 63 392 0.184
escape gen 92 99 96 431 0.214
cgi gen 261 249 255 728 0.358
varargs gen 14 15 16 25 0.554
control_flow gen 135 180 134 153 0.882

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.4 3.4 7.7 0.42
cartesian gen 3.4 3.4 3.4 7.7 0.44
escape 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
cgi gen 3.5 3.5 3.4 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
length gen 3.5 3.4 3.5 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.4 3.5 7.6 0.47
files gen 3.7 3.8 3.7 7.7 0.47
tuple_return_value gen 3.7 3.8 3.8 7.7 0.47
fib_iter gen 3.7 3.5 3.7 7.6 0.48
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.7 0.49
containers gen 28.3 28.3 28.5 48.2 0.59
varargs gen 5.5 5.4 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
modules gen 0 1 0 8 0.000
classes gen 1 1 0 13 0.070
gc_stack_roots gen 1 1 1 9 0.151
fib_recursive gen 2 0 0 9 0.199
control_flow gen 1 1 1 5 0.200
loops gen 2 1 0 7 0.242
files gen 2 1 2 8 0.242
fib_iter gen 3 0 1 9 0.296
containers gen 8 9 11 25 0.304
scoped_resource gen 3 3 2 9 0.337
parse gen 3 6 8 8 0.373
cartesian gen 3 5 10 8 0.377
asdl_generated gen 2 2 4 5 0.396
cgi gen 4 2 5 10 0.400
tuple_return_value gen 3 2 2 7 0.432
varargs gen 25 23 22 32 0.773
escape gen 6 6 2 7 0.858
length gen 7 6 5 7 1.020

raw benchmark files