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 3 27 0.000
gc_stack_roots gen 0 2 12 0.000
fib_iter gen 4 4 893 0.004
modules gen 2 0 185 0.009
fib_recursive gen 11 11 886 0.012
loops gen 4 3 290 0.013
asdl_generated gen 5 8 389 0.014
parse gen 25 27 769 0.033
scoped_resource gen 40 45 1,045 0.038
files gen 4 4 75 0.050
containers gen 8 7 120 0.065
tuple_return_value gen 16 15 183 0.090
length gen 46 40 194 0.237
cartesian gen 92 85 328 0.281
escape gen 99 96 353 0.281
varargs gen 16 25 40 0.393
cgi gen 270 268 512 0.527
control_flow gen 207 156 110 1.885

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.5 4.5 10.6 0.42
asdl_generated gen 3.5 3.5 7.1 0.50
cartesian gen 3.5 3.5 7.1 0.50
fib_iter gen 3.5 3.8 7.1 0.50
cgi gen 3.5 3.7 6.9 0.51
gc_stack_roots gen 3.5 3.7 6.9 0.51
loops gen 3.7 3.8 7.1 0.52
parse gen 3.9 3.8 7.5 0.53
escape gen 3.7 3.7 6.9 0.53
fib_recursive gen 3.7 3.8 6.9 0.53
scoped_resource gen 3.8 3.7 7.1 0.54
files gen 3.8 3.8 6.9 0.55
length gen 3.8 3.7 6.9 0.55
modules gen 3.8 3.8 6.9 0.55
tuple_return_value gen 3.8 3.8 6.9 0.55
control_flow gen 3.9 3.8 6.9 0.57
containers gen 28.4 28.5 47.6 0.60
varargs gen 5.6 5.5 6.9 0.81

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
cartesian gen 0 0 8 0.000
cgi gen 0 0 4 0.000
control_flow gen 0 4 4 0.000
length gen 0 4 12 0.000
loops gen 0 0 8 0.000
modules gen 0 2 16 0.000
containers gen 8 7 20 0.391
parse gen 4 0 8 0.453
fib_iter gen 4 4 8 0.476
tuple_return_value gen 4 4 8 0.515
asdl_generated gen 5 4 8 0.680
classes gen 3 0 4 0.737
files gen 4 4 4 0.945
scoped_resource gen 8 0 8 0.996
varargs gen 51 41 32 1.596
escape gen 8 8 4 1.978
gc_stack_roots gen 2 0 0 inf
fib_recursive gen 0 0 0 NA

raw benchmark files