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
fib_recursive gen 5 5 6 1,117 0.005
modules gen 1 0 1 234 0.006
loops gen 3 2 2 369 0.007
fib_iter gen 7 6 6 973 0.007
asdl_generated gen 9 7 9 522 0.017
scoped_resource gen 29 26 25 1,364 0.022
parse gen 25 24 25 950 0.026
tuple_return_value gen 11 15 15 282 0.039
classes gen 1 2 3 29 0.046
containers gen 6 7 6 122 0.049
files gen 6 5 4 98 0.059
gc_stack_roots gen 1 0 1 13 0.113
length gen 35 32 37 245 0.144
cartesian gen 67 74 66 388 0.173
escape gen 93 99 93 430 0.216
cgi gen 256 252 256 734 0.349
varargs gen 17 15 12 32 0.520
control_flow gen 137 179 132 144 0.949

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.2 4.3 11.5 0.38
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.5 3.4 3.5 7.7 0.46
loops gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
cgi gen 3.5 3.4 3.5 7.6 0.47
gc_stack_roots gen 3.5 3.4 3.3 7.6 0.47
modules gen 3.5 3.7 3.4 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
fib_recursive gen 3.7 3.4 3.5 7.7 0.47
length gen 3.7 3.4 3.5 7.7 0.47
fib_iter gen 3.7 3.4 3.7 7.6 0.48
files gen 3.7 3.7 3.8 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.4 28.4 28.5 48.4 0.59
varargs gen 5.5 5.5 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 1 1 7 0.000
gc_stack_roots gen 0 1 0 8 0.000
loops gen 0 1 1 8 0.000
modules gen 0 1 0 8 0.000
classes gen 1 1 0 14 0.095
scoped_resource gen 1 5 5 10 0.098
asdl_generated gen 1 3 1 10 0.101
files gen 1 2 3 9 0.106
parse gen 1 3 1 8 0.125
fib_recursive gen 1 1 0 8 0.130
cgi gen 2 1 3 10 0.200
containers gen 8 7 8 30 0.267
control_flow gen 2 0 3 6 0.335
length gen 3 5 2 7 0.431
tuple_return_value gen 4 1 0 8 0.499
escape gen 4 5 5 8 0.501
varargs gen 22 24 27 24 0.898
cartesian gen 8 6 9 5 1.600

raw benchmark files