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 0 0 12 0.000
loops gen 1 3 2 368 0.002
fib_recursive gen 6 5 6 1,133 0.005
modules gen 1 1 1 239 0.006
fib_iter gen 6 5 6 976 0.006
asdl_generated gen 8 9 6 504 0.016
scoped_resource gen 28 28 25 1,413 0.020
parse gen 23 24 22 964 0.024
containers gen 5 8 5 127 0.039
classes gen 1 1 1 34 0.039
tuple_return_value gen 12 14 12 245 0.049
files gen 6 5 5 95 0.061
length gen 35 31 35 245 0.142
cartesian gen 63 83 71 389 0.163
escape gen 93 101 92 416 0.224
cgi gen 258 250 258 738 0.350
varargs gen 13 21 16 33 0.396
control_flow gen 134 177 135 149 0.895

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.3 3.4 3.4 7.6 0.43
escape gen 3.4 3.4 3.5 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
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.4 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 3.4 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
files gen 3.7 3.7 3.8 7.7 0.47
length gen 3.7 3.4 3.7 7.7 0.47
loops gen 3.7 3.7 3.5 7.7 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.5 28.5 48.4 0.59
varargs gen 5.2 5.5 5.4 7.6 0.69

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 2 0 6 0.000
modules gen 0 1 0 7 0.000
files gen 1 2 2 11 0.088
fib_iter gen 1 2 1 9 0.113
classes gen 1 2 1 9 0.148
gc_stack_roots gen 1 1 1 8 0.176
asdl_generated gen 2 1 4 9 0.222
parse gen 2 3 4 8 0.243
tuple_return_value gen 3 3 3 9 0.333
containers gen 9 7 9 25 0.353
length gen 4 5 4 11 0.362
escape gen 5 3 7 13 0.385
scoped_resource gen 2 4 5 5 0.396
loops gen 2 0 1 4 0.428
cgi gen 4 1 3 9 0.443
control_flow gen 2 2 0 4 0.498
varargs gen 25 18 22 23 1.093
cartesian gen 12 7 4 7 1.696

raw benchmark files