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 4 5 6 1,080 0.004
fib_iter gen 5 6 6 965 0.005
modules gen 1 1 0 239 0.006
loops gen 2 2 1 362 0.007
asdl_generated gen 8 8 7 510 0.016
scoped_resource gen 25 28 27 1,387 0.018
parse gen 22 25 24 947 0.024
containers gen 5 6 5 124 0.039
tuple_return_value gen 13 17 13 251 0.052
gc_stack_roots gen 1 0 0 11 0.062
classes gen 2 3 3 28 0.062
files gen 6 6 6 95 0.063
length gen 38 33 35 251 0.150
cartesian gen 73 73 73 392 0.186
escape gen 91 100 92 444 0.206
cgi gen 257 250 258 740 0.347
varargs gen 20 15 17 32 0.629
control_flow gen 135 177 133 148 0.909

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.6 0.37
gc_stack_roots gen 3.3 3.4 3.4 7.7 0.42
cgi gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.5 3.4 7.6 0.45
escape gen 3.5 3.7 3.4 7.7 0.46
parse gen 3.7 3.8 3.8 8.0 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.5 3.4 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.7 3.7 3.7 7.7 0.47
loops gen 3.7 3.5 3.7 7.7 0.47
modules gen 3.7 3.5 3.7 7.7 0.47
length gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.7 3.8 7.6 0.50
tuple_return_value gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.7 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
loops gen 0 1 2 7 0.000
modules gen 0 0 1 7 0.000
classes gen 1 0 0 15 0.060
gc_stack_roots gen 1 1 1 9 0.076
files gen 1 1 1 11 0.090
length gen 1 4 4 7 0.145
fib_recursive gen 2 1 0 9 0.198
control_flow gen 1 2 2 5 0.199
asdl_generated gen 2 2 3 7 0.284
cartesian gen 2 7 3 7 0.286
containers gen 9 8 9 28 0.314
fib_iter gen 2 1 1 6 0.334
cgi gen 4 5 3 10 0.399
parse gen 3 2 1 7 0.437
tuple_return_value gen 2 0 2 4 0.499
scoped_resource gen 5 4 3 9 0.561
varargs gen 18 23 21 25 0.724
escape gen 7 6 9 7 1.004

raw benchmark files