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
loops gen 1 3 2 363 0.002
fib_recursive gen 5 6 5 1,102 0.005
modules gen 1 1 0 231 0.006
fib_iter gen 7 5 6 971 0.007
asdl_generated gen 7 8 7 518 0.013
scoped_resource gen 28 31 28 1,380 0.020
parse gen 23 23 24 935 0.025
containers gen 5 7 5 127 0.039
classes gen 2 2 2 37 0.049
tuple_return_value gen 15 17 14 250 0.060
files gen 6 7 6 100 0.061
gc_stack_roots gen 1 1 1 12 0.124
length gen 35 32 34 242 0.146
cartesian gen 70 70 68 393 0.178
escape gen 92 103 91 433 0.212
cgi gen 258 252 259 730 0.353
varargs gen 20 15 15 31 0.651
control_flow gen 131 177 138 149 0.885

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.5 4.5 11.5 0.38
asdl_generated gen 3.3 3.4 3.4 7.6 0.43
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.4 3.5 3.5 7.6 0.45
fib_iter gen 3.5 3.5 3.7 7.7 0.46
modules gen 3.5 3.7 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.4 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
length gen 3.7 3.5 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
fib_recursive gen 3.7 3.7 3.7 7.6 0.48
files gen 3.7 3.7 3.8 7.6 0.48
loops gen 3.7 3.5 3.4 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.3 28.6 28.3 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
fib_iter gen 0 2 2 7 0.000
gc_stack_roots gen 0 1 0 9 0.000
modules gen 0 0 1 13 0.000
tuple_return_value gen 0 1 1 7 0.000
files gen 1 0 1 8 0.127
classes gen 1 1 1 7 0.130
loops gen 2 0 1 10 0.171
fib_recursive gen 1 0 2 6 0.174
scoped_resource gen 2 1 2 11 0.182
length gen 2 4 4 10 0.203
parse gen 3 4 2 11 0.273
containers gen 9 7 9 29 0.308
asdl_generated gen 3 2 3 9 0.332
cgi gen 3 3 2 9 0.333
varargs gen 18 24 23 26 0.698
escape gen 5 2 6 7 0.713
cartesian gen 6 10 7 8 0.749
control_flow gen 4 2 0 5 0.799

raw benchmark files