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
loops gen 0 3 304 0.000
fib_iter gen 8 4 940 0.008
modules gen 2 2 186 0.009
fib_recursive gen 11 11 882 0.012
asdl_generated gen 5 11 373 0.014
parse gen 26 23 759 0.034
containers gen 5 4 112 0.045
scoped_resource gen 48 46 1,038 0.046
tuple_return_value gen 12 18 184 0.066
files gen 7 7 72 0.102
classes gen 3 3 26 0.120
length gen 40 44 205 0.196
gc_stack_roots gen 2 2 8 0.228
cartesian gen 84 87 326 0.258
escape gen 100 104 345 0.291
cgi gen 269 249 516 0.522
varargs gen 20 11 24 0.854
control_flow gen 218 160 109 2.001

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.42
parse gen 3.7 3.9 7.6 0.48
gc_stack_roots gen 3.4 3.4 6.9 0.49
cartesian gen 3.5 3.7 6.9 0.51
cgi gen 3.5 3.5 6.9 0.51
escape gen 3.5 3.7 6.9 0.51
modules gen 3.5 3.7 6.9 0.51
scoped_resource gen 3.7 3.8 7.1 0.52
tuple_return_value gen 3.7 3.8 7.1 0.52
asdl_generated gen 3.7 3.5 6.9 0.53
control_flow gen 3.7 3.9 6.9 0.53
files gen 3.7 3.7 6.9 0.53
loops gen 3.8 3.8 7.1 0.54
fib_iter gen 3.8 3.7 6.9 0.55
fib_recursive gen 3.8 3.8 6.9 0.55
length gen 3.8 3.8 6.9 0.55
containers gen 28.7 28.4 47.6 0.60
varargs gen 5.5 5.4 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
cgi gen 0 4 4 0.000
classes gen 0 0 4 0.000
control_flow gen 0 0 4 0.000
fib_iter gen 0 4 8 0.000
fib_recursive gen 0 0 4 0.000
files gen 0 0 4 0.000
gc_stack_roots gen 0 0 4 0.000
modules gen 0 0 4 0.000
scoped_resource gen 0 0 8 0.000
parse gen 4 4 16 0.233
escape gen 4 0 8 0.500
containers gen 10 11 20 0.501
asdl_generated gen 5 0 8 0.659
varargs gen 44 54 47 0.940
length gen 4 0 4 0.998
tuple_return_value gen 8 0 8 1.039
cartesian gen 8 0 4 2.013
loops gen 4 0 0 inf

raw benchmark files