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 0 1 235 0.000
loops gen 2 3 3 374 0.005
fib_iter gen 4 6 7 976 0.005
fib_recursive gen 5 5 5 1,102 0.005
asdl_generated gen 7 10 9 510 0.014
scoped_resource gen 27 28 26 1,410 0.019
parse gen 25 25 23 961 0.026
files gen 4 6 6 98 0.039
containers gen 6 5 6 120 0.050
tuple_return_value gen 12 14 13 245 0.050
classes gen 2 1 2 31 0.057
gc_stack_roots gen 1 0 0 11 0.063
length gen 35 34 31 242 0.143
cartesian gen 70 77 69 424 0.165
escape gen 89 98 91 430 0.208
cgi gen 261 246 259 736 0.355
varargs gen 14 20 12 35 0.406
control_flow gen 137 175 134 147 0.933

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 1 1 1 10 0.070
classes gen 1 1 1 12 0.074
parse gen 1 2 2 11 0.090
cgi gen 1 6 3 10 0.100
fib_recursive gen 1 1 1 8 0.112
loops gen 1 0 0 7 0.120
control_flow gen 1 3 2 5 0.200
modules gen 1 1 0 7 0.201
containers gen 8 10 8 33 0.241
files gen 3 1 1 10 0.286
fib_iter gen 3 1 0 9 0.298
asdl_generated gen 3 0 1 8 0.372
tuple_return_value gen 3 3 2 7 0.404
scoped_resource gen 3 3 5 7 0.438
length gen 4 2 7 7 0.564
escape gen 8 7 6 11 0.722
cartesian gen 5 3 6 5 0.999
varargs gen 24 18 26 23 1.059

raw benchmark files