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 0 0 1 234 0.000
loops gen 2 3 3 347 0.005
fib_recursive gen 6 4 4 1,084 0.006
fib_iter gen 7 5 6 959 0.007
scoped_resource gen 25 27 27 1,367 0.018
asdl_generated gen 10 7 9 498 0.020
parse gen 19 23 22 944 0.021
containers gen 5 8 5 127 0.040
gc_stack_roots gen 1 1 1 13 0.053
tuple_return_value gen 14 14 12 248 0.056
files gen 7 5 6 101 0.065
classes gen 3 2 3 33 0.082
length gen 35 33 32 242 0.144
cartesian gen 71 78 69 436 0.163
escape gen 94 96 92 429 0.219
cgi gen 258 246 257 728 0.355
control_flow gen 134 177 133 147 0.913
varargs gen 19 19 19 16 1.192

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.3 4.3 11.5 0.39
cartesian gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
asdl_generated gen 3.5 3.4 3.4 7.6 0.47
cgi gen 3.5 3.7 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
length gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
loops gen 3.7 3.5 3.5 7.6 0.48
modules gen 3.7 3.7 3.5 7.6 0.48
files gen 3.8 3.8 3.7 7.7 0.49
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 3 1 9 0.000
classes gen 0 1 0 11 0.000
fib_iter gen 0 2 1 8 0.000
fib_recursive gen 0 3 2 6 0.000
files gen 0 2 1 6 0.000
loops gen 1 0 0 11 0.076
gc_stack_roots gen 1 1 0 7 0.098
tuple_return_value gen 1 3 3 8 0.125
modules gen 1 1 0 11 0.127
control_flow gen 1 2 3 6 0.166
containers gen 8 6 9 26 0.316
cgi gen 3 5 3 9 0.333
varargs gen 19 19 20 40 0.477
scoped_resource gen 5 4 3 10 0.495
length gen 4 3 6 8 0.497
escape gen 4 8 5 7 0.572
parse gen 6 4 4 8 0.730
cartesian gen 4 2 6 5 0.801

raw benchmark files