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 1 12 0.000
loops gen 1 2 1 378 0.002
fib_recursive gen 5 6 6 1,099 0.005
modules gen 1 1 1 238 0.006
fib_iter gen 6 7 6 966 0.006
asdl_generated gen 8 9 8 516 0.015
scoped_resource gen 31 25 30 1,405 0.022
parse gen 22 24 23 944 0.024
classes gen 1 1 1 40 0.033
containers gen 5 6 5 133 0.037
tuple_return_value gen 14 15 13 255 0.056
files gen 6 6 7 97 0.059
length gen 34 33 35 242 0.140
cartesian gen 70 74 72 400 0.175
escape gen 93 100 95 425 0.219
cgi gen 257 249 257 728 0.354
varargs gen 19 20 25 29 0.652
control_flow gen 135 179 134 141 0.953

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.3 4.5 11.5 0.38
asdl_generated gen 3.4 3.3 3.4 7.7 0.44
modules gen 3.4 3.5 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.5 3.5 3.4 7.7 0.46
fib_recursive gen 3.5 3.4 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.4 7.6 0.47
cgi gen 3.5 3.5 3.4 7.6 0.47
fib_iter gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.5 3.5 7.6 0.47
files gen 3.7 3.7 3.5 7.7 0.47
scoped_resource gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.8 3.8 3.7 8.0 0.48
loops 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
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.4 28.2 48.2 0.59
varargs gen 5.5 5.4 5.6 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
modules gen 0 1 0 9 0.000
scoped_resource gen 0 6 0 9 0.000
files gen 1 1 0 11 0.088
control_flow gen 1 0 2 9 0.111
gc_stack_roots gen 1 0 0 8 0.169
loops gen 2 1 2 10 0.169
fib_recursive gen 1 0 0 6 0.172
asdl_generated gen 2 1 2 9 0.221
fib_iter gen 1 0 1 4 0.254
tuple_return_value gen 1 1 2 4 0.255
parse gen 3 3 2 11 0.276
cgi gen 3 3 5 8 0.375
classes gen 1 2 1 3 0.442
containers gen 9 8 9 20 0.447
length gen 5 4 4 9 0.552
varargs gen 19 19 13 27 0.700
cartesian gen 5 6 3 5 0.997
escape gen 6 4 3 6 1.002

raw benchmark files