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
gc_stack_roots gen 0 2 4 0.000
fib_iter gen 4 8 910 0.004
modules gen 2 2 174 0.010
loops gen 4 0 299 0.012
fib_recursive gen 11 11 878 0.013
asdl_generated gen 7 4 379 0.019
parse gen 25 27 777 0.032
containers gen 4 5 101 0.038
scoped_resource gen 50 37 1,014 0.049
files gen 4 8 64 0.058
tuple_return_value gen 20 19 187 0.108
classes gen 3 4 20 0.169
length gen 45 36 208 0.218
cartesian gen 91 86 330 0.276
escape gen 99 106 356 0.278
cgi gen 265 264 528 0.503
varargs gen 12 29 19 0.609
control_flow gen 209 157 105 1.989

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
length gen 3.5 3.8 7.1 0.50
parse gen 3.8 3.8 7.5 0.51
cartesian gen 3.5 3.7 6.9 0.51
cgi gen 3.5 3.8 6.9 0.51
gc_stack_roots gen 3.5 3.4 6.9 0.51
fib_iter gen 3.7 3.8 6.9 0.53
loops gen 3.8 3.8 7.1 0.54
asdl_generated gen 3.7 3.8 6.8 0.54
escape gen 3.7 3.7 6.8 0.54
fib_recursive gen 3.8 3.7 6.9 0.55
files gen 3.8 3.8 6.9 0.55
modules gen 3.8 3.7 6.9 0.55
scoped_resource gen 3.8 3.7 6.9 0.55
tuple_return_value gen 3.8 3.7 6.9 0.55
control_flow gen 3.9 3.7 7.1 0.56
containers gen 28.6 28.6 47.6 0.60
varargs gen 5.5 5.6 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
cartesian gen 0 0 4 0.000
classes gen 0 0 12 0.000
control_flow gen 0 4 8 0.000
fib_recursive gen 0 0 4 0.000
length gen 0 8 4 0.000
loops gen 0 3 4 0.000
modules gen 0 0 8 0.000
scoped_resource gen 0 8 16 0.000
tuple_return_value gen 0 0 8 0.000
gc_stack_roots gen 2 0 8 0.223
files gen 4 0 12 0.310
containers gen 12 10 36 0.320
cgi gen 4 4 8 0.495
varargs gen 54 37 53 1.015
parse gen 4 0 4 1.046
asdl_generated gen 4 7 0 inf
escape gen 8 4 0 inf
fib_iter gen 4 0 0 inf

raw benchmark files