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 1 1 230 0.000
loops gen 1 2 1 380 0.002
fib_recursive gen 4 6 5 1,515 0.003
fib_iter gen 6 6 6 967 0.006
asdl_generated gen 9 10 10 516 0.017
scoped_resource gen 25 29 29 1,373 0.018
parse gen 20 24 23 956 0.021
containers gen 3 6 3 132 0.022
classes gen 1 1 0 32 0.028
files gen 4 6 6 101 0.038
tuple_return_value gen 14 13 11 254 0.056
gc_stack_roots gen 1 0 0 12 0.111
length gen 29 35 38 243 0.118
cartesian gen 68 98 70 391 0.174
escape gen 94 100 90 426 0.220
cgi gen 256 249 260 724 0.354
varargs gen 25 14 21 30 0.825
control_flow gen 134 179 135 141 0.948

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.4 3.3 3.4 7.7 0.44
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
length gen 3.5 3.5 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
cgi gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
scoped_resource gen 3.5 3.7 3.7 7.5 0.47
fib_iter gen 3.7 3.5 3.5 7.7 0.47
modules gen 3.7 3.5 3.4 7.7 0.47
files gen 3.7 3.7 3.8 7.6 0.48
loops gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.7 7.6 0.50
tuple_return_value gen 3.8 3.5 3.5 7.6 0.50
containers gen 28.5 28.5 28.5 48.4 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
gc_stack_roots gen 0 1 1 8 0.000
control_flow gen 1 2 1 12 0.083
modules gen 1 0 1 11 0.125
fib_iter gen 1 1 1 8 0.126
tuple_return_value gen 1 4 4 8 0.127
classes gen 2 2 3 11 0.162
fib_recursive gen 2 0 1 8 0.222
cgi gen 3 2 0 10 0.300
asdl_generated gen 1 0 0 3 0.329
loops gen 2 2 1 5 0.336
files gen 3 1 1 8 0.360
escape gen 4 5 7 11 0.363
containers gen 11 8 11 20 0.530
varargs gen 14 24 17 26 0.533
scoped_resource gen 5 2 2 8 0.609
cartesian gen 7 8 6 8 0.873
parse gen 5 3 3 5 1.011
length gen 10 2 1 7 1.408

raw benchmark files