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 0 1 232 0.000
loops gen 2 3 2 358 0.005
fib_recursive gen 6 5 4 1,108 0.006
fib_iter gen 6 7 7 958 0.006
asdl_generated gen 9 10 9 507 0.018
scoped_resource gen 28 29 28 1,369 0.020
parse gen 21 24 24 947 0.022
gc_stack_roots gen 1 1 1 16 0.046
tuple_return_value gen 12 15 13 247 0.050
classes gen 2 3 2 36 0.050
containers gen 7 7 5 130 0.054
files gen 6 6 5 99 0.061
length gen 37 30 36 250 0.147
cartesian gen 70 78 68 394 0.178
escape gen 94 99 95 430 0.218
cgi gen 247 250 260 746 0.330
varargs gen 13 11 15 31 0.419
control_flow gen 135 179 136 147 0.919

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.5 11.6 0.38
asdl_generated gen 3.4 3.4 3.3 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.3 7.6 0.45
loops gen 3.4 3.5 3.5 7.6 0.45
scoped_resource gen 3.4 3.7 3.5 7.6 0.45
parse gen 3.7 3.7 3.7 8.1 0.45
modules gen 3.5 3.5 3.7 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.4 3.4 7.6 0.47
length gen 3.5 3.5 3.4 7.6 0.47
files gen 3.7 3.8 3.8 7.7 0.47
fib_recursive gen 3.7 3.5 3.4 7.6 0.48
tuple_return_value gen 3.7 3.5 3.8 7.6 0.48
fib_iter gen 3.7 3.5 3.7 7.5 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.6 28.5 28.4 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_recursive gen 0 1 3 9 0.000
fib_iter gen 1 0 0 11 0.093
files gen 1 1 2 9 0.111
control_flow gen 1 0 0 9 0.112
loops gen 1 0 1 7 0.123
classes gen 1 0 1 7 0.128
modules gen 1 1 1 11 0.135
gc_stack_roots gen 1 0 0 5 0.146
asdl_generated gen 1 0 1 4 0.253
containers gen 7 8 9 25 0.281
length gen 2 6 3 7 0.284
cgi gen 2 1 1 6 0.333
scoped_resource gen 3 3 2 8 0.370
tuple_return_value gen 3 2 2 7 0.438
parse gen 4 3 2 9 0.450
escape gen 3 6 3 6 0.498
cartesian gen 5 2 8 7 0.715
varargs gen 25 27 24 26 0.961

raw benchmark files