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 1 1 235 0.000
loops gen 2 2 3 363 0.005
fib_recursive gen 5 5 5 1,100 0.005
fib_iter gen 7 7 7 963 0.007
asdl_generated gen 7 10 8 501 0.014
scoped_resource gen 26 30 26 1,360 0.019
parse gen 24 24 23 947 0.025
containers gen 5 4 3 132 0.038
files gen 5 6 7 100 0.049
tuple_return_value gen 14 16 14 246 0.057
classes gen 2 1 1 33 0.059
gc_stack_roots gen 1 1 1 13 0.105
length gen 36 30 33 245 0.146
cartesian gen 68 76 67 393 0.174
escape gen 94 100 96 432 0.217
cgi gen 260 251 258 728 0.358
varargs gen 16 13 15 25 0.649
control_flow gen 135 182 137 147 0.921

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cgi gen 0 2 2 5 0.000
fib_iter gen 0 0 0 7 0.000
gc_stack_roots gen 0 0 0 8 0.000
classes gen 1 1 2 11 0.088
tuple_return_value gen 1 1 1 10 0.101
loops gen 1 2 0 6 0.141
modules gen 1 0 0 10 0.146
fib_recursive gen 1 1 1 5 0.206
parse gen 2 3 2 8 0.246
files gen 2 1 0 8 0.247
control_flow gen 2 2 0 8 0.251
length gen 3 6 5 9 0.331
asdl_generated gen 3 0 3 8 0.376
containers gen 9 11 11 24 0.377
scoped_resource gen 5 1 4 12 0.410
escape gen 5 6 3 8 0.629
varargs gen 22 25 24 32 0.697
cartesian gen 7 4 8 9 0.780

raw benchmark files