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
gc_stack_roots gen 0 1 0 14 0.000
modules gen 0 1 0 234 0.000
loops gen 1 1 3 358 0.003
fib_recursive gen 5 6 5 1,106 0.005
fib_iter gen 6 6 6 952 0.006
asdl_generated gen 9 9 8 521 0.017
scoped_resource gen 28 28 28 1,374 0.020
parse gen 25 25 23 946 0.027
classes gen 1 1 3 33 0.027
files gen 5 5 6 98 0.049
tuple_return_value gen 14 16 14 248 0.056
containers gen 7 3 7 120 0.060
length gen 34 32 36 240 0.140
cartesian gen 74 74 72 393 0.189
escape gen 94 102 94 436 0.217
cgi gen 261 243 254 742 0.351
varargs gen 14 15 18 24 0.593
control_flow gen 132 178 134 145 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.3 4.5 4.5 11.4 0.38
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
cartesian gen 3.4 3.4 3.5 7.6 0.45
modules gen 3.4 3.7 3.5 7.6 0.45
scoped_resource gen 3.4 3.5 3.5 7.6 0.45
cgi gen 3.5 3.4 3.4 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.8 3.9 8.1 0.47
length gen 3.7 3.5 3.5 7.7 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.7 3.8 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.6 0.50
files gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.3 28.7 28.4 48.2 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
parse gen 0 2 3 7 0.000
asdl_generated gen 1 1 2 8 0.124
tuple_return_value gen 1 1 1 7 0.143
cgi gen 1 8 5 7 0.143
fib_recursive gen 1 0 1 7 0.149
modules gen 1 0 1 9 0.153
classes gen 2 1 0 10 0.180
containers gen 6 11 6 29 0.213
gc_stack_roots gen 1 0 1 6 0.224
files gen 2 2 1 8 0.239
scoped_resource gen 3 3 2 11 0.270
loops gen 1 2 0 4 0.312
control_flow gen 3 1 2 8 0.373
cartesian gen 3 7 3 7 0.425
fib_iter gen 2 1 1 4 0.468
length gen 5 5 3 9 0.553
varargs gen 24 23 20 32 0.763
escape gen 4 4 5 5 0.804

raw benchmark files