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
classes gen 0 1 1 33 0.000
gc_stack_roots gen 0 0 0 11 0.000
modules gen 0 1 1 237 0.000
fib_recursive gen 4 6 5 1,116 0.004
loops gen 3 2 1 363 0.007
fib_iter gen 7 6 7 963 0.007
asdl_generated gen 8 9 8 522 0.015
scoped_resource gen 26 30 27 1,431 0.018
parse gen 20 24 24 984 0.020
containers gen 3 8 7 131 0.023
tuple_return_value gen 13 16 13 254 0.052
files gen 6 6 4 96 0.061
length gen 33 34 32 246 0.132
cartesian gen 66 68 66 395 0.166
escape gen 93 97 95 430 0.217
cgi gen 255 249 258 755 0.338
varargs gen 22 14 20 34 0.651
control_flow gen 134 178 134 146 0.913

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.3 4.5 11.5 0.39
asdl_generated gen 3.4 3.4 3.3 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
parse gen 3.7 3.9 3.7 8.1 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
length gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.4 3.5 7.5 0.47
escape gen 3.7 3.5 3.5 7.7 0.47
tuple_return_value gen 3.8 3.8 3.8 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.3 28.4 48.2 0.59
varargs gen 5.5 5.5 5.4 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 1 0 8 0.000
loops gen 0 1 2 11 0.000
files gen 1 1 3 11 0.089
gc_stack_roots gen 1 1 1 9 0.150
modules gen 1 1 0 9 0.154
tuple_return_value gen 2 1 2 9 0.225
asdl_generated gen 2 1 2 8 0.247
control_flow gen 2 1 1 8 0.249
classes gen 3 2 2 11 0.249
fib_recursive gen 2 0 2 7 0.254
escape gen 5 8 3 13 0.386
containers gen 11 7 6 23 0.481
length gen 6 3 6 10 0.610
scoped_resource gen 4 2 3 6 0.662
cgi gen 4 3 2 6 0.664
varargs gen 16 24 18 23 0.700
parse gen 6 3 1 8 0.737
cartesian gen 10 10 10 8 1.261

raw benchmark files