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 1 13 0.000
modules gen 1 1 1 214 0.005
fib_recursive gen 6 5 5 996 0.006
fib_iter gen 6 6 5 742 0.008
loops gen 2 3 1 319 0.008
asdl_generated gen 8 9 7 512 0.015
parse gen 21 26 23 899 0.023
scoped_resource gen 29 32 27 1,217 0.024
classes gen 1 2 1 30 0.025
containers gen 4 5 5 106 0.037
files gen 5 5 6 91 0.056
tuple_return_value gen 12 15 13 218 0.057
length gen 32 30 30 228 0.142
cartesian gen 64 69 66 362 0.175
escape gen 83 92 83 385 0.215
cgi gen 185 175 185 663 0.280
varargs gen 15 17 19 22 0.684
control_flow gen 126 167 124 138 0.911

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.6 4.6 11.5 0.39
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.7 3.4 7.7 0.46
length gen 3.5 3.8 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.7 7.7 0.46
asdl_generated gen 3.5 3.4 3.4 7.6 0.47
cgi gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.7 3.7 7.6 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
fib_iter gen 3.7 3.5 3.7 7.7 0.47
tuple_return_value gen 3.7 3.7 3.8 7.7 0.47
loops gen 3.7 3.7 3.7 7.6 0.48
files gen 3.8 3.7 3.8 7.9 0.48
control_flow gen 3.7 3.9 3.7 7.5 0.49
fib_recursive gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.8 28.7 48.4 0.59
varargs gen 5.6 5.5 5.6 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 1 2 3 0.000
fib_recursive gen 0 1 0 5 0.000
length gen 0 2 2 4 0.000
loops gen 0 0 1 5 0.000
modules gen 0 0 0 2 0.000
classes gen 2 0 1 8 0.193
gc_stack_roots gen 1 0 0 4 0.268
fib_iter gen 1 0 1 3 0.311
asdl_generated gen 2 1 2 6 0.317
files gen 1 1 0 3 0.342
containers gen 9 7 7 24 0.371
tuple_return_value gen 2 1 1 5 0.385
scoped_resource gen 2 0 3 5 0.396
cgi gen 2 3 1 4 0.501
parse gen 3 0 1 5 0.603
varargs gen 9 7 5 14 0.645
escape gen 3 2 3 3 0.998
cartesian gen 5 6 4 3 1.654

raw benchmark files