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 1 0 12 0.000
fib_recursive gen 5 6 6 1,104 0.005
modules gen 1 1 0 232 0.006
fib_iter gen 6 6 7 966 0.006
loops gen 3 3 1 360 0.007
asdl_generated gen 9 9 7 511 0.017
scoped_resource gen 27 29 28 1,357 0.020
parse gen 22 26 21 963 0.023
containers gen 5 10 6 129 0.040
tuple_return_value gen 13 15 14 247 0.053
classes gen 2 3 0 32 0.055
files gen 6 6 6 100 0.060
length gen 37 35 29 249 0.149
cartesian gen 65 72 71 394 0.165
escape gen 89 99 92 429 0.208
cgi gen 260 246 258 746 0.348
varargs gen 18 18 15 25 0.718
control_flow gen 135 181 135 146 0.929

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.5 4.5 11.6 0.37
asdl_generated gen 3.4 3.3 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.5 7.7 0.44
cgi gen 3.4 3.4 3.5 7.6 0.45
modules gen 3.5 3.7 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
escape gen 3.5 3.7 3.5 7.6 0.47
fib_iter gen 3.5 3.5 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.7 7.6 0.47
loops gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.8 3.8 7.9 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.7 3.8 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.5 48.3 0.59
varargs gen 5.5 5.5 5.6 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
loops gen 0 0 1 7 0.000
modules gen 0 0 1 9 0.000
classes gen 1 1 3 11 0.081
files gen 1 1 1 7 0.141
fib_recursive gen 1 0 0 7 0.148
gc_stack_roots gen 1 1 1 8 0.169
control_flow gen 1 3 0 5 0.201
fib_iter gen 1 1 0 5 0.203
asdl_generated gen 1 1 3 5 0.220
cgi gen 2 6 2 7 0.286
tuple_return_value gen 2 2 1 7 0.287
scoped_resource gen 3 3 2 9 0.330
containers gen 8 4 7 25 0.334
parse gen 3 1 5 5 0.611
varargs gen 20 21 23 31 0.644
length gen 4 2 10 5 0.804
escape gen 9 6 6 10 0.905
cartesian gen 10 9 5 9 1.110

raw benchmark files