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 9 0.000
loops gen 1 3 3 358 0.002
fib_recursive gen 5 5 5 1,096 0.005
modules gen 1 1 2 239 0.006
fib_iter gen 6 6 6 967 0.006
asdl_generated gen 9 9 9 521 0.017
scoped_resource gen 28 31 29 1,374 0.020
parse gen 25 27 21 969 0.026
containers gen 5 3 6 130 0.039
classes gen 2 2 2 38 0.046
tuple_return_value gen 13 16 14 257 0.051
files gen 6 5 5 96 0.061
length gen 35 34 36 251 0.140
cartesian gen 68 73 67 384 0.178
escape gen 91 101 93 444 0.205
cgi gen 254 252 258 735 0.346
varargs gen 14 19 14 30 0.457
control_flow gen 135 178 135 150 0.899

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
modules gen 0 0 0 9 0.000
files gen 1 2 2 11 0.089
gc_stack_roots gen 1 2 1 12 0.115
parse gen 1 1 4 8 0.125
fib_iter gen 1 1 1 8 0.127
fib_recursive gen 1 2 1 7 0.131
control_flow gen 1 2 2 6 0.168
asdl_generated gen 1 1 1 6 0.168
classes gen 1 1 1 5 0.176
loops gen 2 0 0 7 0.243
tuple_return_value gen 2 1 1 7 0.287
scoped_resource gen 2 1 2 6 0.335
containers gen 9 12 7 26 0.354
length gen 3 2 2 6 0.503
cgi gen 5 2 2 9 0.556
cartesian gen 7 8 8 9 0.771
varargs gen 25 20 24 28 0.875
escape gen 8 4 6 7 1.143

raw benchmark files