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 1 1 232 0.000
loops gen 1 3 2 357 0.002
fib_recursive gen 4 6 5 1,089 0.003
fib_iter gen 4 6 5 977 0.005
containers gen 2 6 5 132 0.015
asdl_generated gen 9 9 9 529 0.017
scoped_resource gen 26 28 27 1,365 0.019
parse gen 22 25 22 950 0.023
files gen 5 6 5 102 0.048
tuple_return_value gen 14 16 15 250 0.056
classes gen 3 1 1 36 0.076
gc_stack_roots gen 1 0 0 14 0.102
length gen 37 35 38 247 0.148
cartesian gen 73 72 70 397 0.185
escape gen 89 101 95 436 0.203
cgi gen 258 250 255 748 0.346
varargs gen 21 18 13 28 0.757
control_flow gen 132 176 135 148 0.896

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.5 4.5 4.3 11.5 0.39
asdl_generated gen 3.4 3.4 3.3 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.4 7.7 0.46
length gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.9 3.7 8.0 0.47
fib_iter gen 3.7 3.7 3.4 7.6 0.48
modules gen 3.7 3.7 3.5 7.6 0.48
scoped_resource gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.3 28.5 48.2 0.59
varargs gen 5.6 5.5 5.5 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 2 2 8 0.000
gc_stack_roots gen 0 1 1 7 0.000
asdl_generated gen 1 1 1 12 0.083
tuple_return_value gen 1 1 0 11 0.091
modules gen 1 1 1 10 0.145
loops gen 2 0 1 7 0.241
length gen 2 2 1 6 0.331
cgi gen 1 3 5 3 0.333
fib_iter gen 3 1 2 8 0.335
parse gen 4 2 4 11 0.356
control_flow gen 3 3 1 8 0.374
files gen 2 1 2 5 0.392
fib_recursive gen 3 0 2 6 0.445
varargs gen 17 21 26 32 0.536
containers gen 12 8 9 21 0.563
cartesian gen 4 8 6 7 0.572
scoped_resource gen 4 3 4 7 0.579
escape gen 10 4 3 8 1.244

raw benchmark files