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 3 359 0.002
fib_iter gen 5 6 6 956 0.005
fib_recursive gen 6 5 5 1,085 0.006
modules gen 1 0 0 239 0.006
asdl_generated gen 9 10 7 522 0.017
scoped_resource gen 27 30 26 1,357 0.020
parse gen 25 22 22 958 0.026
containers gen 5 6 6 129 0.039
gc_stack_roots gen 1 1 0 15 0.046
tuple_return_value gen 14 17 13 252 0.055
files gen 7 6 5 100 0.068
classes gen 3 1 2 33 0.080
length gen 31 30 31 258 0.121
cartesian gen 71 73 69 410 0.173
escape gen 91 101 91 428 0.213
cgi gen 257 250 259 737 0.348
varargs gen 19 15 19 28 0.679
control_flow gen 137 177 133 149 0.916

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.5 11.5 0.38
gc_stack_roots gen 3.3 3.4 3.3 7.7 0.42
cgi gen 3.4 3.5 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
fib_iter gen 3.5 3.4 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
scoped_resource gen 3.5 3.5 3.5 7.5 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
files gen 3.7 3.8 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.7 28.5 48.3 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
classes gen 0 1 1 9 0.000
control_flow gen 0 2 2 7 0.000
fib_recursive gen 0 2 1 8 0.000
files gen 0 1 2 7 0.000
modules gen 0 1 1 7 0.000
asdl_generated gen 1 0 3 9 0.111
parse gen 1 5 3 9 0.114
tuple_return_value gen 1 0 2 8 0.125
gc_stack_roots gen 1 0 1 5 0.138
loops gen 2 2 0 7 0.240
fib_iter gen 2 1 1 7 0.288
containers gen 9 8 8 23 0.393
scoped_resource gen 3 3 4 7 0.425
cgi gen 4 2 1 6 0.666
varargs gen 19 23 20 27 0.704
escape gen 7 3 6 9 0.780
cartesian gen 5 7 6 6 0.832
length gen 7 6 8 7 1.004

raw benchmark files