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 2 1 356 0.002
modules gen 1 1 1 238 0.003
fib_recursive gen 6 5 5 1,102 0.006
fib_iter gen 7 7 7 956 0.007
asdl_generated gen 8 7 8 504 0.016
scoped_resource gen 28 30 26 1,390 0.020
parse gen 23 25 25 960 0.024
containers gen 4 7 4 130 0.031
classes gen 1 1 1 34 0.039
files gen 5 6 7 102 0.047
tuple_return_value gen 13 11 14 245 0.052
gc_stack_roots gen 1 0 1 11 0.063
length gen 33 35 37 244 0.135
cartesian gen 68 75 73 403 0.168
escape gen 95 101 90 442 0.215
cgi gen 258 257 259 733 0.352
varargs gen 14 20 17 33 0.421
control_flow gen 137 177 140 147 0.928

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.4 3.4 3.4 7.6 0.45
cartesian gen 3.4 3.5 3.4 7.6 0.45
escape gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
length gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.7 3.4 3.7 7.7 0.47
fib_iter gen 3.7 3.5 3.4 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
loops gen 3.7 3.7 3.7 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.7 7.7 0.49
containers gen 28.5 28.5 28.4 48.3 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
control_flow gen 0 3 2 6 0.000
fib_iter gen 0 0 0 7 0.000
fib_recursive gen 0 1 1 9 0.000
gc_stack_roots gen 1 1 0 9 0.077
modules gen 1 1 1 6 0.118
classes gen 1 1 1 9 0.148
cgi gen 1 1 2 6 0.166
tuple_return_value gen 2 5 1 10 0.197
parse gen 2 2 1 10 0.202
asdl_generated gen 2 3 2 9 0.219
loops gen 2 1 2 7 0.242
scoped_resource gen 2 2 4 7 0.283
containers gen 10 7 9 22 0.454
files gen 2 1 0 4 0.482
escape gen 4 4 8 8 0.498
cartesian gen 8 6 3 12 0.664
length gen 6 2 1 6 0.992
varargs gen 25 19 21 24 1.033

raw benchmark files