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 237 0.000
fib_recursive gen 4 6 6 1,115 0.004
loops gen 2 3 1 358 0.005
fib_iter gen 6 5 6 960 0.006
asdl_generated gen 10 8 9 523 0.019
scoped_resource gen 26 31 27 1,357 0.019
parse gen 21 27 25 950 0.022
containers gen 3 7 6 131 0.023
classes gen 1 2 2 34 0.039
tuple_return_value gen 13 14 13 245 0.053
files gen 6 7 5 99 0.060
gc_stack_roots gen 1 1 1 11 0.124
length gen 35 30 32 246 0.140
cartesian gen 69 70 70 397 0.175
escape gen 96 99 93 434 0.220
cgi gen 258 249 259 738 0.349
varargs gen 17 17 13 21 0.799
control_flow gen 133 180 131 147 0.905

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.3 4.3 4.3 11.5 0.38
asdl_generated gen 3.1 3.4 3.4 7.7 0.41
cgi gen 3.4 3.7 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
parse gen 3.7 3.8 3.9 8.0 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
length gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.4 7.6 0.47
files gen 3.7 3.5 3.8 7.7 0.47
modules gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.4 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.4 28.7 28.5 48.2 0.59
varargs gen 5.5 5.5 5.4 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 2 7 0.000
gc_stack_roots gen 0 0 0 9 0.000
files gen 1 0 2 8 0.122
classes gen 1 1 1 9 0.147
loops gen 1 0 1 5 0.176
fib_iter gen 1 2 1 5 0.202
cgi gen 2 3 1 9 0.222
fib_recursive gen 2 0 0 7 0.255
modules gen 1 1 1 5 0.279
control_flow gen 2 2 5 7 0.286
tuple_return_value gen 2 2 2 7 0.287
length gen 3 6 7 10 0.296
escape gen 3 4 5 7 0.426
parse gen 4 0 1 9 0.452
containers gen 11 6 8 23 0.478
scoped_resource gen 4 1 3 7 0.577
varargs gen 22 22 26 35 0.620
cartesian gen 7 10 5 7 1.005

raw benchmark files