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 2 3 29 0.000
gc_stack_roots gen 0 0 1 11 0.000
loops gen 1 3 2 374 0.002
modules gen 1 1 1 232 0.003
fib_recursive gen 4 5 4 1,083 0.004
fib_iter gen 7 5 7 976 0.007
asdl_generated gen 9 10 9 514 0.017
scoped_resource gen 26 28 27 1,345 0.020
parse gen 21 27 25 962 0.022
containers gen 5 6 6 116 0.042
tuple_return_value gen 14 12 29 260 0.054
files gen 7 5 6 99 0.068
length gen 35 35 35 249 0.139
cartesian gen 65 69 69 397 0.164
escape gen 96 97 95 427 0.226
cgi gen 252 250 259 736 0.343
varargs gen 19 22 16 29 0.664
control_flow gen 133 178 133 145 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.3 4.5 4.3 11.6 0.37
asdl_generated gen 3.3 3.3 3.4 7.6 0.43
cartesian gen 3.4 3.5 3.4 7.6 0.45
cgi gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
gc_stack_roots gen 3.5 3.4 3.4 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
parse gen 3.8 3.8 3.8 8.1 0.47
fib_iter gen 3.7 3.5 3.7 7.7 0.47
files gen 3.7 3.8 3.8 7.7 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
containers gen 28.6 28.5 28.5 48.2 0.59
varargs gen 5.5 5.4 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 2 0 10 0.000
files gen 0 2 1 8 0.000
modules gen 1 1 0 10 0.070
asdl_generated gen 1 0 1 8 0.124
gc_stack_roots gen 1 1 1 10 0.139
loops gen 2 0 1 11 0.155
fib_recursive gen 2 1 2 10 0.177
classes gen 3 1 0 14 0.191
tuple_return_value gen 1 4 2 5 0.201
containers gen 9 8 7 34 0.256
control_flow gen 3 0 2 8 0.376
length gen 4 2 4 8 0.496
escape gen 2 9 4 4 0.501
scoped_resource gen 4 3 3 6 0.673
varargs gen 20 17 22 27 0.750
parse gen 5 1 0 6 0.822
cartesian gen 10 11 6 8 1.251
cgi gen 6 2 2 4 1.496

raw benchmark files