mycpp Code Generation

Measure the speedup from mycpp, and the resource usage.

Source code: oil/mycpp/examples

User Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
classes gen 0 0 28 0.000
fib_iter gen 4 8 1,043 0.004
modules gen 2 2 180 0.011
fib_recursive gen 11 11 879 0.013
loops gen 4 0 297 0.013
asdl_generated gen 8 7 400 0.019
parse gen 29 27 771 0.038
scoped_resource gen 40 46 1,035 0.038
files gen 4 8 64 0.060
containers gen 10 10 117 0.082
tuple_return_value gen 21 18 183 0.116
length gen 44 42 210 0.211
cartesian gen 92 79 338 0.273
escape gen 97 105 345 0.282
cgi gen 270 270 507 0.531
gc_stack_roots gen 2 0 3 0.586
varargs gen 17 12 16 1.027
control_flow gen 209 162 111 1.877

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++-Souffle Python C++ : Python
classes gen 4.3 4.5 10.8 0.40
gc_stack_roots gen 3.4 3.4 6.9 0.49
parse gen 3.8 3.8 7.6 0.50
cartesian gen 3.5 3.7 6.9 0.51
cgi gen 3.5 3.7 6.9 0.51
escape gen 3.7 3.5 6.9 0.53
fib_iter gen 3.7 3.7 6.9 0.53
fib_recursive gen 3.7 3.8 6.9 0.53
scoped_resource gen 3.7 3.7 6.9 0.53
tuple_return_value gen 3.7 3.8 6.9 0.53
loops gen 3.8 3.7 7.1 0.54
asdl_generated gen 3.7 3.8 6.8 0.54
files gen 3.8 3.8 6.9 0.55
length gen 3.8 3.8 6.9 0.55
modules gen 3.8 3.8 6.9 0.55
control_flow gen 3.9 3.9 7.1 0.56
containers gen 28.7 28.6 47.5 0.60
varargs gen 5.6 5.5 7.1 0.80

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
cgi gen 0 0 4 0.000
control_flow gen 0 0 4 0.000
fib_recursive gen 0 0 4 0.000
gc_stack_roots gen 0 2 9 0.000
loops gen 0 3 4 0.000
modules gen 0 0 4 0.000
parse gen 0 0 8 0.000
tuple_return_value gen 0 0 8 0.000
containers gen 6 5 24 0.265
files gen 4 0 12 0.318
classes gen 3 3 4 0.821
varargs gen 50 55 57 0.880
asdl_generated gen 4 4 4 0.951
fib_iter gen 4 0 4 0.956
scoped_resource gen 8 0 8 0.992
escape gen 8 0 8 1.010
cartesian gen 0 8 0 NA
length gen 0 4 0 NA

raw benchmark files