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 1 0 1 235 0.003
fib_recursive gen 4 5 6 1,083 0.004
fib_iter gen 6 7 5 953 0.006
loops gen 3 2 2 351 0.007
asdl_generated gen 8 8 9 519 0.015
scoped_resource gen 25 31 27 1,344 0.018
parse gen 24 24 24 939 0.025
containers gen 6 9 6 134 0.043
tuple_return_value gen 11 14 14 251 0.046
classes gen 2 1 3 32 0.055
files gen 6 5 5 97 0.063
gc_stack_roots gen 1 1 1 9 0.156
length gen 38 35 37 238 0.158
cartesian gen 70 77 72 393 0.179
escape gen 96 102 94 434 0.221
cgi gen 256 238 259 742 0.345
varargs gen 12 11 16 27 0.448
control_flow gen 134 186 133 147 0.912

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.5 11.6 0.37
asdl_generated gen 3.3 3.3 3.4 7.6 0.43
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
length gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
cgi gen 3.5 3.5 3.4 7.6 0.47
escape gen 3.5 3.4 3.5 7.6 0.47
loops gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.7 3.5 3.7 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.47
fib_iter gen 3.7 3.5 3.4 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.6 28.5 28.5 48.2 0.59
varargs gen 5.5 5.6 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 0 1 1 12 0.000
loops gen 0 1 1 11 0.000
classes gen 1 1 0 12 0.073
length gen 1 1 2 12 0.085
files gen 1 2 2 9 0.112
fib_iter gen 1 0 2 9 0.113
modules gen 1 1 1 6 0.122
parse gen 2 3 2 15 0.131
fib_recursive gen 2 1 0 11 0.162
control_flow gen 1 3 3 6 0.167
containers gen 8 5 7 29 0.266
asdl_generated gen 2 2 1 4 0.497
tuple_return_value gen 4 3 1 7 0.544
cartesian gen 5 3 7 9 0.557
scoped_resource gen 5 1 3 8 0.640
escape gen 3 4 6 4 0.749
cgi gen 4 0 1 5 0.799
varargs gen 26 28 23 30 0.873

raw benchmark files