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
fib_recursive gen 5 6 5 1,098 0.005
loops gen 2 3 1 346 0.005
modules gen 1 0 1 234 0.006
fib_iter gen 6 6 6 965 0.006
asdl_generated gen 9 10 10 508 0.018
scoped_resource gen 28 24 27 1,384 0.020
parse gen 22 25 21 947 0.024
tuple_return_value gen 15 15 7 256 0.059
containers gen 7 4 4 124 0.060
files gen 6 5 7 96 0.061
classes gen 3 2 1 33 0.081
gc_stack_roots gen 1 1 1 13 0.105
length gen 34 37 34 239 0.141
cartesian gen 69 77 66 415 0.166
escape gen 95 105 93 421 0.227
cgi gen 259 250 264 735 0.352
varargs gen 20 17 15 33 0.612
control_flow gen 134 177 133 142 0.944

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.3 4.5 11.5 0.38
asdl_generated gen 3.3 3.3 3.3 7.6 0.43
gc_stack_roots gen 3.3 3.4 3.3 7.6 0.43
cartesian gen 3.4 3.5 3.4 7.7 0.44
escape gen 3.4 3.5 3.4 7.6 0.45
scoped_resource gen 3.5 3.7 3.5 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
cgi gen 3.5 3.5 3.4 7.6 0.47
loops gen 3.5 3.5 3.7 7.6 0.47
files gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.7 3.5 7.6 0.48
fib_recursive gen 3.7 3.4 3.5 7.6 0.48
length gen 3.7 3.5 3.7 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.6 28.5 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 2 10 0.000
gc_stack_roots gen 0 0 0 7 0.000
modules gen 0 1 0 7 0.000
tuple_return_value gen 0 2 8 4 0.000
loops gen 1 0 2 9 0.093
files gen 1 2 0 10 0.098
control_flow gen 1 1 3 9 0.112
fib_recursive gen 1 0 1 8 0.129
scoped_resource gen 2 7 3 11 0.181
containers gen 5 10 10 28 0.190
fib_iter gen 1 1 1 5 0.200
asdl_generated gen 1 0 0 4 0.246
parse gen 3 2 4 10 0.293
escape gen 3 3 6 10 0.302
cgi gen 3 3 4 6 0.500
length gen 5 0 5 9 0.551
varargs gen 18 22 23 26 0.699
cartesian gen 6 3 9 8 0.749

raw benchmark files