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 0 0 12 0.000
fib_recursive gen 5 5 4 1,110 0.005
modules gen 1 0 0 241 0.006
loops gen 3 3 1 364 0.007
fib_iter gen 7 7 7 954 0.008
asdl_generated gen 7 9 7 514 0.014
scoped_resource gen 26 28 27 1,392 0.019
parse gen 19 26 19 938 0.020
classes gen 1 2 3 35 0.025
files gen 4 4 7 103 0.044
tuple_return_value gen 12 15 12 250 0.048
containers gen 6 4 5 118 0.051
length gen 32 34 33 248 0.128
cartesian gen 74 73 64 405 0.182
escape gen 92 100 93 415 0.223
cgi gen 253 251 257 744 0.340
varargs gen 18 12 17 27 0.686
control_flow gen 135 178 133 145 0.928

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.2 12.3 0.35
asdl_generated gen 3.4 3.4 3.4 8.5 0.40
gc_stack_roots gen 3.4 3.4 3.5 8.4 0.41
cartesian gen 3.5 3.5 3.5 8.5 0.42
length gen 3.5 3.7 3.7 8.5 0.42
tuple_return_value gen 3.5 3.7 3.8 8.5 0.42
escape gen 3.5 3.4 3.5 8.4 0.42
loops gen 3.5 3.5 3.5 8.3 0.43
scoped_resource gen 3.5 3.4 3.5 8.3 0.43
fib_iter gen 3.7 3.7 3.5 8.5 0.43
fib_recursive gen 3.7 3.5 3.7 8.5 0.43
modules gen 3.7 3.7 3.5 8.5 0.43
cgi gen 3.7 3.4 3.7 8.4 0.44
parse gen 3.8 3.8 3.8 8.7 0.44
control_flow gen 3.8 3.7 3.8 8.5 0.45
files gen 3.8 3.7 3.7 8.3 0.46
containers gen 28.7 28.7 28.5 49.0 0.58
varargs gen 5.5 5.5 5.5 8.3 0.67

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 0 0 11 0.000
loops gen 0 1 2 8 0.000
modules gen 0 1 1 10 0.000
fib_recursive gen 1 1 2 10 0.106
gc_stack_roots gen 1 1 1 11 0.126
cartesian gen 1 7 11 7 0.144
classes gen 2 1 0 11 0.163
control_flow gen 2 0 3 11 0.183
containers gen 8 10 8 38 0.213
files gen 2 3 0 9 0.250
asdl_generated gen 3 1 3 9 0.333
scoped_resource gen 4 3 4 11 0.356
tuple_return_value gen 3 2 3 7 0.426
escape gen 6 5 6 11 0.542
parse gen 7 1 7 12 0.570
varargs gen 19 27 21 33 0.593
cgi gen 6 1 3 7 0.858
length gen 7 2 6 8 0.869

raw benchmark files