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 3 3 370 0.002
fib_recursive gen 5 5 6 1,104 0.005
modules gen 2 0 1 238 0.006
fib_iter gen 7 7 7 961 0.008
asdl_generated gen 8 9 8 516 0.016
scoped_resource gen 25 31 30 1,367 0.018
parse gen 25 25 24 957 0.026
classes gen 1 2 2 36 0.026
files gen 5 6 6 102 0.049
containers gen 6 7 7 121 0.050
gc_stack_roots gen 1 1 2 14 0.056
tuple_return_value gen 14 16 14 250 0.057
length gen 36 36 35 251 0.144
cartesian gen 68 73 61 399 0.170
escape gen 93 100 90 431 0.216
cgi gen 260 251 247 740 0.351
varargs gen 17 17 13 23 0.746
control_flow gen 133 180 134 149 0.891

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cgi gen 0 4 4 6 0.000
fib_iter gen 0 0 0 5 0.000
modules gen 0 2 1 4 0.000
gc_stack_roots gen 1 0 0 8 0.098
parse gen 1 2 2 10 0.102
tuple_return_value gen 1 1 1 9 0.112
loops gen 2 0 0 11 0.159
fib_recursive gen 1 2 0 6 0.177
classes gen 2 1 1 9 0.208
containers gen 9 9 8 34 0.266
asdl_generated gen 2 1 2 7 0.268
files gen 2 1 1 7 0.284
control_flow gen 2 1 2 6 0.330
length gen 3 1 4 9 0.336
scoped_resource gen 5 1 0 12 0.416
escape gen 5 5 8 11 0.456
varargs gen 21 21 26 35 0.605
cartesian gen 7 7 15 7 0.999

raw benchmark files