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 1 0 1 210 0.005
fib_recursive gen 5 5 5 994 0.006
loops gen 2 2 2 318 0.007
fib_iter gen 7 5 5 743 0.009
asdl_generated gen 10 10 9 514 0.019
scoped_resource gen 28 29 26 1,239 0.023
parse gen 23 23 23 895 0.026
containers gen 6 4 5 110 0.056
classes gen 2 2 0 36 0.065
tuple_return_value gen 14 15 12 219 0.066
files gen 6 6 5 91 0.066
gc_stack_roots gen 1 0 1 11 0.103
length gen 29 30 28 222 0.129
cartesian gen 64 73 65 358 0.180
escape gen 84 92 84 380 0.220
cgi gen 181 177 181 663 0.273
varargs gen 13 14 17 29 0.454
control_flow gen 124 167 125 136 0.913

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.3 3.4 3.4 7.7 0.42
cgi gen 3.5 3.5 3.7 7.9 0.45
escape gen 3.5 3.7 3.5 7.7 0.46
fib_recursive gen 3.5 3.5 3.7 7.7 0.46
length gen 3.5 3.5 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
gc_stack_roots gen 3.5 3.5 3.4 7.6 0.47
modules gen 3.7 3.7 3.7 7.9 0.47
fib_iter gen 3.7 3.7 3.5 7.7 0.47
tuple_return_value gen 3.7 3.9 3.8 7.7 0.47
files gen 3.8 3.7 3.8 7.9 0.48
parse gen 3.9 3.9 3.9 8.1 0.48
loops gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.9 3.9 3.8 7.7 0.51
containers gen 28.7 28.3 28.6 48.4 0.59
varargs gen 5.6 5.5 5.4 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 0 1 4 0.000
classes gen 0 0 2 3 0.000
fib_iter gen 0 1 1 2 0.000
fib_recursive gen 0 1 0 6 0.000
files gen 0 0 1 5 0.000
gc_stack_roots gen 0 1 0 6 0.000
loops gen 0 1 0 5 0.000
modules gen 0 1 0 4 0.000
tuple_return_value gen 0 1 3 4 0.000
parse gen 1 3 1 8 0.125
scoped_resource gen 1 2 3 6 0.169
control_flow gen 1 1 1 5 0.200
containers gen 6 8 8 19 0.325
length gen 4 2 4 5 0.791
escape gen 3 3 2 3 0.998
cgi gen 4 1 5 4 1.000
varargs gen 11 10 7 8 1.392
cartesian gen 5 2 4 2 2.479

raw benchmark files