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
gc_stack_roots gen 0 1 0 14 0.000
modules gen 0 0 0 203 0.000
loops gen 1 2 2 310 0.004
fib_recursive gen 6 5 5 990 0.006
fib_iter gen 6 6 6 738 0.009
asdl_generated gen 8 9 8 509 0.017
scoped_resource gen 29 29 27 1,235 0.023
parse gen 24 26 22 896 0.027
containers gen 6 2 4 112 0.050
tuple_return_value gen 14 14 13 220 0.066
files gen 6 6 5 90 0.068
classes gen 2 3 2 33 0.071
length gen 30 34 30 224 0.133
cartesian gen 70 74 67 359 0.196
escape gen 86 90 84 386 0.222
cgi gen 185 177 185 664 0.278
varargs gen 17 15 17 27 0.634
control_flow gen 125 167 126 134 0.934

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.6 4.5 11.6 0.38
asdl_generated gen 3.4 3.4 3.4 7.9 0.43
gc_stack_roots gen 3.5 3.3 3.5 7.9 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
length gen 3.5 3.7 3.7 7.7 0.46
fib_iter gen 3.7 3.7 3.8 7.9 0.47
scoped_resource gen 3.7 3.4 3.7 7.9 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
escape gen 3.7 3.4 3.5 7.7 0.47
fib_recursive gen 3.7 3.5 3.8 7.7 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
modules gen 3.7 3.7 3.7 7.7 0.47
cartesian gen 3.7 3.5 3.5 7.6 0.48
files gen 3.8 3.9 3.8 7.7 0.49
control_flow gen 3.9 3.7 3.7 7.9 0.50
tuple_return_value gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.7 28.7 28.8 48.5 0.59
varargs gen 5.6 5.6 5.8 7.9 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 0 0 6 0.000
control_flow gen 0 1 0 6 0.000
fib_iter gen 0 1 0 7 0.000
fib_recursive gen 0 1 1 6 0.000
files gen 0 0 1 4 0.000
parse gen 0 1 2 3 0.000
tuple_return_value gen 0 2 1 6 0.000
escape gen 1 5 2 6 0.168
scoped_resource gen 1 3 2 5 0.198
asdl_generated gen 1 1 1 5 0.211
loops gen 1 1 0 5 0.219
modules gen 1 1 1 5 0.237
cartesian gen 2 1 2 7 0.282
containers gen 8 11 9 19 0.396
gc_stack_roots gen 1 0 1 3 0.410
cgi gen 2 2 1 3 0.665
varargs gen 7 9 7 10 0.705
length gen 3 0 3 4 0.745

raw benchmark files