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 1 0 12 0.000
loops gen 1 2 3 359 0.002
modules gen 1 0 0 242 0.003
fib_recursive gen 6 5 6 1,086 0.006
fib_iter gen 8 6 6 964 0.009
asdl_generated gen 9 9 8 510 0.017
scoped_resource gen 27 29 27 1,368 0.020
parse gen 23 24 21 944 0.025
classes gen 1 2 0 35 0.026
files gen 5 7 7 97 0.050
tuple_return_value gen 13 14 12 251 0.053
containers gen 7 6 3 126 0.055
length gen 33 30 36 241 0.136
cartesian gen 70 74 72 384 0.181
escape gen 97 102 88 438 0.220
cgi gen 258 248 256 737 0.350
varargs gen 16 18 17 29 0.554
control_flow gen 132 176 137 147 0.904

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 1 1 9 0.000
fib_recursive gen 0 1 0 7 0.000
modules gen 1 1 1 10 0.070
asdl_generated gen 1 1 2 9 0.109
cgi gen 1 4 0 6 0.167
gc_stack_roots gen 1 1 1 8 0.175
classes gen 2 1 3 8 0.227
files gen 2 0 0 8 0.242
containers gen 7 8 10 25 0.278
parse gen 2 3 5 6 0.338
tuple_return_value gen 2 2 3 6 0.343
control_flow gen 2 2 1 5 0.397
scoped_resource gen 3 2 4 7 0.433
loops gen 2 2 0 3 0.553
length gen 6 6 2 9 0.661
cartesian gen 5 6 3 7 0.711
escape gen 4 4 9 5 0.804
varargs gen 22 20 21 27 0.818

raw benchmark files