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 235 0.000
fib_recursive gen 4 5 6 1,113 0.004
loops gen 2 2 1 358 0.005
fib_iter gen 7 7 6 956 0.008
asdl_generated gen 8 8 8 516 0.015
scoped_resource gen 26 31 29 1,402 0.019
parse gen 23 23 23 944 0.025
classes gen 1 3 2 32 0.028
tuple_return_value gen 11 10 14 247 0.044
containers gen 6 6 6 128 0.048
files gen 6 6 6 103 0.056
gc_stack_roots gen 1 0 0 13 0.102
length gen 35 30 34 240 0.145
cartesian gen 68 76 69 393 0.174
escape gen 98 101 91 443 0.220
cgi gen 257 250 257 737 0.349
varargs gen 18 13 15 34 0.533
control_flow gen 136 179 134 147 0.921

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
asdl_generated gen 3.3 3.4 3.5 7.6 0.43
cartesian gen 3.4 3.5 3.4 7.6 0.45
cgi gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.5 7.6 0.45
scoped_resource gen 3.4 3.5 3.5 7.6 0.45
escape gen 3.5 3.5 3.4 7.7 0.46
fib_iter gen 3.5 3.7 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 3.5 7.6 0.47
length 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.9 8.1 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
files gen 3.8 3.5 3.8 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.7 3.7 7.6 0.50
containers gen 28.5 28.7 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
fib_iter gen 0 0 1 6 0.000
gc_stack_roots gen 0 1 1 7 0.000
escape gen 1 4 6 9 0.112
files gen 1 1 1 6 0.163
classes gen 2 0 1 11 0.163
control_flow gen 1 1 1 6 0.167
loops gen 1 1 1 5 0.168
fib_recursive gen 2 1 0 7 0.256
parse gen 2 4 3 7 0.279
containers gen 7 8 8 23 0.313
modules gen 1 1 0 4 0.355
asdl_generated gen 2 2 2 5 0.396
length gen 4 6 5 8 0.498
scoped_resource gen 4 2 1 8 0.506
tuple_return_value gen 4 7 1 7 0.563
cgi gen 4 3 4 6 0.666
varargs gen 20 25 23 23 0.876
cartesian gen 7 4 6 8 0.879

raw benchmark files