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,108 0.005
loops gen 2 3 1 365 0.005
modules gen 1 1 1 244 0.006
fib_iter gen 7 6 6 957 0.007
asdl_generated gen 9 9 8 509 0.018
scoped_resource gen 29 30 28 1,368 0.021
parse gen 25 25 25 957 0.026
containers gen 5 5 6 120 0.041
classes gen 2 2 2 40 0.045
tuple_return_value gen 12 16 13 255 0.047
files gen 7 7 7 106 0.065
gc_stack_roots gen 1 1 1 10 0.140
length gen 35 32 34 248 0.142
cartesian gen 71 70 72 395 0.181
escape gen 90 95 95 435 0.207
cgi gen 260 250 258 731 0.356
varargs gen 19 23 22 35 0.535
control_flow gen 136 177 135 147 0.931

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.3 11.5 0.38
gc_stack_roots gen 3.3 3.4 3.3 7.6 0.43
cgi gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.3 3.5 7.6 0.45
escape gen 3.4 3.5 3.4 7.6 0.45
loops gen 3.5 3.5 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
fib_iter gen 3.7 3.5 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.8 3.7 8.0 0.48
files gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.7 0.49
containers gen 28.5 28.5 28.5 48.1 0.59
varargs gen 5.4 5.5 5.5 7.6 0.71

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
fib_iter gen 0 1 1 5 0.000
files gen 0 0 0 4 0.000
gc_stack_roots gen 0 1 1 12 0.000
modules gen 0 0 0 7 0.000
fib_recursive gen 1 2 0 13 0.080
asdl_generated gen 1 1 2 11 0.092
parse gen 1 2 1 10 0.100
cgi gen 1 3 3 9 0.111
scoped_resource gen 1 2 2 9 0.114
loops gen 1 0 2 5 0.172
classes gen 1 1 1 4 0.219
containers gen 10 10 8 33 0.299
length gen 3 4 5 6 0.501
tuple_return_value gen 3 1 2 6 0.503
cartesian gen 4 10 3 7 0.574
varargs gen 20 16 17 23 0.856
escape gen 11 9 2 7 1.557

raw benchmark files