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 1 1 1 235 0.003
fib_recursive gen 4 4 5 1,114 0.004
loops gen 2 2 1 361 0.005
fib_iter gen 6 7 5 970 0.006
asdl_generated gen 8 10 8 520 0.015
scoped_resource gen 27 28 28 1,360 0.019
parse gen 24 25 25 951 0.026
classes gen 1 2 1 32 0.027
containers gen 4 6 6 123 0.033
tuple_return_value gen 12 16 11 254 0.048
files gen 5 5 7 97 0.050
gc_stack_roots gen 1 1 1 12 0.112
length gen 29 32 36 250 0.118
cartesian gen 70 75 64 429 0.163
escape gen 94 99 97 422 0.222
cgi gen 258 254 254 726 0.355
varargs gen 15 11 15 28 0.538
control_flow gen 135 179 134 146 0.924

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.5 11.5 0.38
asdl_generated gen 3.3 3.3 3.3 7.7 0.42
cgi gen 3.4 3.5 3.4 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
escape gen 3.5 3.7 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
length gen 3.7 3.5 3.5 7.7 0.47
loops gen 3.7 3.7 3.7 7.7 0.47
scoped_resource gen 3.7 3.5 3.5 7.7 0.47
fib_recursive gen 3.7 3.4 3.7 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.4 28.3 48.2 0.59
varargs gen 5.5 5.4 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 2 1 7 0.000
gc_stack_roots gen 0 1 0 8 0.000
parse gen 1 3 1 9 0.113
modules gen 1 1 0 6 0.119
loops gen 1 1 2 6 0.140
classes gen 2 1 1 11 0.163
files gen 2 2 0 8 0.241
asdl_generated gen 2 0 2 8 0.248
cgi gen 2 1 7 8 0.251
fib_iter gen 1 0 3 4 0.252
containers gen 10 9 8 30 0.337
fib_recursive gen 2 2 1 5 0.356
scoped_resource gen 4 3 3 10 0.393
tuple_return_value gen 3 1 4 5 0.606
escape gen 5 6 2 8 0.623
cartesian gen 5 5 10 7 0.711
varargs gen 23 28 23 30 0.770
length gen 9 5 3 7 1.263

raw benchmark files