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 2 2 1 358 0.005
fib_recursive gen 6 5 6 1,100 0.006
modules gen 1 1 1 235 0.006
fib_iter gen 6 5 6 966 0.006
scoped_resource gen 26 30 26 1,350 0.019
asdl_generated gen 10 9 8 514 0.019
parse gen 24 24 23 963 0.025
containers gen 5 7 5 125 0.040
files gen 5 5 5 97 0.051
tuple_return_value gen 13 15 14 253 0.052
classes gen 2 1 1 34 0.052
gc_stack_roots gen 1 1 1 10 0.072
length gen 35 30 36 244 0.143
cartesian gen 67 74 70 399 0.167
escape gen 90 102 98 433 0.208
cgi gen 264 250 241 746 0.355
varargs gen 14 19 16 29 0.482
control_flow gen 135 178 145 145 0.930

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.5 4.3 11.5 0.39
cartesian gen 3.4 3.4 3.5 7.7 0.44
asdl_generated gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
fib_recursive gen 3.5 3.5 3.4 7.7 0.46
length gen 3.5 3.7 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.4 7.6 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.7 3.7 3.7 7.6 0.48
modules gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
tuple_return_value gen 3.8 3.7 3.8 7.7 0.49
parse gen 3.9 3.7 3.7 8.0 0.49
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.3 48.1 0.59
varargs gen 5.5 5.4 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 1 2 4 0.000
fib_recursive gen 0 1 0 11 0.000
modules gen 0 0 0 9 0.000
gc_stack_roots gen 1 0 0 11 0.065
loops gen 1 1 2 12 0.071
classes gen 1 2 1 8 0.111
parse gen 1 3 2 9 0.113
fib_iter gen 1 2 1 8 0.127
control_flow gen 1 2 1 7 0.144
files gen 2 2 2 10 0.200
tuple_return_value gen 2 2 1 7 0.286
containers gen 9 8 9 29 0.311
scoped_resource gen 4 2 4 8 0.495
length gen 4 6 3 8 0.497
cgi gen 3 1 4 5 0.599
varargs gen 24 19 23 27 0.888
cartesian gen 8 6 5 6 1.329
escape gen 7 2 1 4 1.748

raw benchmark files