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 16 0.000
fib_iter gen 8 8 884 0.009
modules gen 2 2 182 0.010
fib_recursive gen 11 7 886 0.012
loops gen 4 3 291 0.013
asdl_generated gen 8 12 377 0.020
parse gen 30 23 795 0.037
scoped_resource gen 43 46 1,051 0.041
files gen 4 4 73 0.050
containers gen 8 0 109 0.072
tuple_return_value gen 20 11 185 0.111
length gen 40 37 203 0.199
cartesian gen 93 90 327 0.284
escape gen 102 99 346 0.294
gc_stack_roots gen 2 2 4 0.449
cgi gen 265 254 512 0.519
varargs gen 35 12 20 1.740
control_flow gen 209 158 110 1.894

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.7 0.41
gc_stack_roots gen 3.4 3.4 7.1 0.48
escape gen 3.5 3.5 7.1 0.50
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.8 0.52
asdl_generated gen 3.7 3.5 6.9 0.53
files gen 3.7 3.9 6.9 0.53
scoped_resource gen 3.8 3.8 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
fib_recursive gen 3.8 3.8 6.9 0.55
length gen 3.8 3.5 6.9 0.55
loops gen 3.8 3.8 6.9 0.55
modules gen 3.8 3.7 6.9 0.55
tuple_return_value gen 3.9 3.8 6.9 0.57
containers gen 28.7 28.5 47.5 0.60
varargs gen 5.5 5.5 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
cartesian gen 0 0 8 0.000
control_flow gen 0 4 4 0.000
fib_iter gen 0 0 8 0.000
fib_recursive gen 0 4 8 0.000
gc_stack_roots gen 0 0 8 0.000
loops gen 0 0 4 0.000
modules gen 0 0 8 0.000
parse gen 0 4 4 0.000
tuple_return_value gen 0 7 8 0.000
classes gen 3 0 16 0.213
containers gen 8 15 27 0.290
escape gen 4 4 12 0.328
length gen 4 8 12 0.338
scoped_resource gen 4 0 8 0.492
varargs gen 31 55 53 0.595
asdl_generated gen 4 0 4 0.941
files gen 4 4 4 0.959
cgi gen 4 0 4 1.006

raw benchmark files