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 4 8 898 0.005
modules gen 2 0 210 0.008
asdl_generated gen 4 7 392 0.010
fib_recursive gen 11 7 891 0.012
loops gen 4 3 284 0.014
parse gen 26 27 770 0.033
scoped_resource gen 48 42 1,042 0.046
tuple_return_value gen 20 19 205 0.099
files gen 8 8 73 0.105
containers gen 12 11 112 0.108
classes gen 3 3 20 0.165
length gen 37 45 205 0.180
gc_stack_roots gen 2 2 8 0.221
cartesian gen 83 78 330 0.251
escape gen 102 108 356 0.287
cgi gen 266 266 510 0.521
varargs gen 17 24 12 1.404
control_flow gen 212 162 106 1.996

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
gc_stack_roots gen 3.4 3.4 6.9 0.49
fib_iter gen 3.5 3.8 7.1 0.50
parse gen 3.8 3.8 7.6 0.50
asdl_generated gen 3.5 3.5 6.9 0.51
cartesian gen 3.7 3.7 6.9 0.53
cgi gen 3.7 3.7 6.9 0.53
escape gen 3.7 3.7 6.9 0.53
tuple_return_value gen 3.7 3.7 6.9 0.53
scoped_resource gen 3.8 3.7 7.1 0.54
fib_recursive gen 3.8 3.7 6.9 0.55
files gen 3.8 3.7 6.9 0.55
loops gen 3.8 3.8 6.9 0.55
modules gen 3.8 3.8 6.9 0.55
length gen 3.9 3.7 6.9 0.57
control_flow gen 3.9 3.8 6.8 0.58
containers gen 28.7 28.5 47.6 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
classes gen 0 0 12 0.000
control_flow gen 0 0 8 0.000
files gen 0 0 4 0.000
gc_stack_roots gen 0 0 4 0.000
loops gen 0 0 8 0.000
scoped_resource gen 0 4 8 0.000
tuple_return_value gen 0 0 12 0.000
containers gen 4 4 24 0.168
cgi gen 4 4 8 0.494
fib_iter gen 4 0 8 0.508
varargs gen 50 43 60 0.843
cartesian gen 8 8 4 1.983
asdl_generated gen 8 4 4 2.042
escape gen 4 4 0 inf
length gen 7 0 0 inf
parse gen 4 0 0 inf
fib_recursive gen 0 4 0 NA
modules gen 0 2 0 NA

raw benchmark files