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
fib_iter gen 8 4 902 0.008
modules gen 2 2 178 0.010
fib_recursive gen 11 11 878 0.012
loops gen 4 3 291 0.014
asdl_generated gen 5 11 373 0.014
parse gen 25 23 758 0.033
containers gen 4 7 112 0.035
scoped_resource gen 47 46 1,044 0.045
files gen 4 7 71 0.052
tuple_return_value gen 17 14 186 0.091
length gen 33 37 211 0.157
classes gen 3 3 19 0.166
cartesian gen 78 80 332 0.236
escape gen 102 88 345 0.296
cgi gen 268 263 502 0.534
varargs gen 16 21 12 1.353
control_flow gen 213 160 105 2.026
gc_stack_roots gen 2 2 0 inf

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.3 10.8 0.40
parse gen 3.7 3.9 7.7 0.47
asdl_generated gen 3.5 3.7 6.9 0.51
cgi gen 3.5 3.5 6.9 0.51
gc_stack_roots gen 3.5 3.5 6.9 0.51
cartesian gen 3.7 3.5 7.1 0.52
tuple_return_value gen 3.7 3.8 7.1 0.52
escape gen 3.7 3.5 6.9 0.53
fib_recursive gen 3.7 3.7 6.9 0.53
modules gen 3.7 3.7 6.9 0.53
loops gen 3.8 3.5 7.1 0.54
scoped_resource gen 3.8 3.7 7.1 0.54
control_flow gen 3.8 3.8 6.9 0.55
fib_iter gen 3.8 3.8 6.9 0.55
files gen 3.8 3.8 6.9 0.55
length gen 3.8 3.8 6.9 0.55
containers gen 28.7 28.7 47.6 0.60
varargs gen 5.6 5.6 6.9 0.81

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
cgi gen 0 0 12 0.000
classes gen 0 0 12 0.000
control_flow gen 0 0 8 0.000
fib_iter gen 0 4 4 0.000
fib_recursive gen 0 0 8 0.000
gc_stack_roots gen 0 0 12 0.000
loops gen 0 0 8 0.000
modules gen 0 0 4 0.000
parse gen 4 4 12 0.346
tuple_return_value gen 3 5 8 0.417
containers gen 12 7 24 0.485
escape gen 4 20 8 0.490
asdl_generated gen 5 0 8 0.673
varargs gen 49 45 60 0.812
files gen 4 0 4 0.939
cartesian gen 12 4 4 2.938
length gen 11 8 0 inf
scoped_resource gen 0 0 0 NA

raw benchmark files