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 2 238 0.000
loops gen 1 4 3 362 0.002
fib_recursive gen 5 5 5 1,092 0.004
fib_iter gen 6 6 7 958 0.006
asdl_generated gen 9 12 10 518 0.018
scoped_resource gen 29 33 32 1,374 0.021
classes gen 1 3 2 32 0.025
parse gen 25 26 25 961 0.027
containers gen 7 7 5 130 0.054
files gen 6 8 7 99 0.057
tuple_return_value gen 15 17 15 252 0.059
gc_stack_roots gen 1 1 2 12 0.118
length gen 38 35 39 244 0.157
cartesian gen 71 76 71 390 0.181
escape gen 91 107 98 436 0.208
cgi gen 258 249 257 731 0.353
varargs gen 22 19 23 29 0.742
control_flow gen 134 182 134 147 0.915

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.5 11.5 0.39
asdl_generated gen 3.4 3.5 3.4 7.7 0.44
cgi gen 3.4 3.7 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.5 7.6 0.45
fib_iter gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.4 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
length gen 3.7 3.7 3.5 7.7 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
escape gen 3.7 3.5 3.4 7.6 0.48
modules gen 3.7 3.5 3.5 7.6 0.48
parse gen 3.9 3.7 3.7 8.1 0.48
tuple_return_value gen 3.8 3.8 3.8 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.5 48.0 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 0 9 0.000
length gen 1 3 1 9 0.112
tuple_return_value gen 1 0 1 7 0.143
scoped_resource gen 2 0 0 12 0.169
classes gen 2 0 1 13 0.184
files gen 2 0 0 10 0.186
modules gen 2 2 0 8 0.194
parse gen 1 2 1 5 0.204
loops gen 2 1 0 8 0.220
asdl_generated gen 2 0 1 9 0.230
control_flow gen 2 0 3 8 0.247
containers gen 7 7 9 26 0.268
fib_iter gen 3 3 1 10 0.278
fib_recursive gen 2 2 2 6 0.324
cgi gen 3 5 4 8 0.375
varargs gen 19 21 18 28 0.663
cartesian gen 6 5 5 7 0.866
escape gen 12 2 4 5 2.391

raw benchmark files