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
loops gen 1 2 1 354 0.002
fib_recursive gen 4 6 6 1,098 0.004
modules gen 1 0 0 235 0.006
fib_iter gen 7 6 5 949 0.007
asdl_generated gen 9 8 9 518 0.017
scoped_resource gen 27 28 28 1,377 0.020
parse gen 24 25 21 950 0.025
containers gen 5 3 5 130 0.038
files gen 4 6 6 99 0.045
classes gen 2 3 1 34 0.054
tuple_return_value gen 14 12 14 246 0.056
gc_stack_roots gen 1 1 1 12 0.058
length gen 36 32 34 246 0.148
cartesian gen 70 75 65 391 0.179
escape gen 94 104 93 433 0.218
cgi gen 259 250 257 750 0.346
varargs gen 14 13 19 26 0.544
control_flow gen 133 179 135 147 0.909

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.5 0.38
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
fib_iter gen 3.4 3.7 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
cartesian gen 3.4 3.4 3.5 7.6 0.45
escape gen 3.5 3.4 3.4 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.7 3.7 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
length gen 3.7 3.5 3.5 7.7 0.47
loops gen 3.7 3.5 3.5 7.7 0.47
tuple_return_value gen 3.7 3.7 3.8 7.7 0.47
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.6 28.7 28.5 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_iter gen 0 1 2 9 0.000
modules gen 0 1 1 7 0.000
gc_stack_roots gen 1 1 1 9 0.078
classes gen 1 0 1 9 0.103
tuple_return_value gen 1 4 1 9 0.108
cgi gen 1 2 1 9 0.111
asdl_generated gen 1 2 1 8 0.124
fib_recursive gen 2 0 0 9 0.197
loops gen 2 1 2 8 0.209
parse gen 2 2 4 9 0.218
files gen 2 1 1 9 0.250
scoped_resource gen 3 3 2 11 0.273
escape gen 3 4 6 10 0.301
containers gen 9 12 9 26 0.339
control_flow gen 3 0 1 8 0.374
length gen 2 4 5 5 0.405
cartesian gen 5 5 10 11 0.453
varargs gen 24 26 19 30 0.808

raw benchmark files