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 0 0 12 0.000
modules gen 0 0 1 242 0.000
loops gen 1 2 2 357 0.004
fib_recursive gen 5 5 5 1,071 0.005
fib_iter gen 7 7 6 957 0.007
asdl_generated gen 7 7 8 526 0.013
scoped_resource gen 26 27 27 1,358 0.019
parse gen 22 25 23 961 0.023
classes gen 1 2 2 36 0.024
tuple_return_value gen 14 11 12 254 0.055
files gen 6 7 5 99 0.056
containers gen 8 4 4 132 0.059
length gen 34 33 37 243 0.140
cartesian gen 72 71 91 390 0.185
escape gen 91 100 93 440 0.208
cgi gen 255 245 256 734 0.348
varargs gen 17 14 20 30 0.566
control_flow gen 135 180 135 142 0.950

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.4 3.4 3.4 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.5 3.4 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
files gen 3.5 3.7 3.7 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
loops gen 3.7 3.7 3.4 7.7 0.47
parse gen 3.8 3.8 3.7 7.9 0.48
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
modules gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
containers gen 28.5 28.4 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
control_flow gen 0 0 1 9 0.000
fib_iter gen 0 0 1 9 0.000
tuple_return_value gen 1 5 3 9 0.111
fib_recursive gen 1 1 1 8 0.131
files gen 1 0 2 8 0.139
gc_stack_roots gen 1 1 1 9 0.155
modules gen 1 1 0 7 0.200
loops gen 1 1 0 6 0.209
classes gen 2 1 1 7 0.252
scoped_resource gen 4 4 3 14 0.289
parse gen 3 2 2 10 0.293
containers gen 7 10 10 20 0.339
asdl_generated gen 3 3 2 7 0.426
cartesian gen 4 7 8 8 0.500
cgi gen 4 5 5 7 0.569
length gen 5 3 1 7 0.717
varargs gen 21 24 19 26 0.806
escape gen 7 4 5 7 0.992

raw benchmark files