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 8 8 887 0.008
modules gen 2 0 169 0.011
fib_recursive gen 11 7 880 0.012
loops gen 4 3 288 0.013
asdl_generated gen 11 7 376 0.028
containers gen 4 7 116 0.033
parse gen 29 22 762 0.038
scoped_resource gen 41 38 1,039 0.039
tuple_return_value gen 12 15 210 0.058
files gen 8 7 82 0.092
classes gen 3 3 23 0.142
length gen 44 40 198 0.223
cartesian gen 83 87 320 0.260
escape gen 98 104 374 0.263
gc_stack_roots gen 2 2 6 0.294
cgi gen 261 263 513 0.508
varargs gen 31 29 24 1.303
control_flow gen 209 162 107 1.959

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.8 0.41
gc_stack_roots gen 3.4 3.5 6.9 0.49
cartesian gen 3.5 3.5 6.9 0.51
parse gen 3.9 3.7 7.6 0.52
cgi gen 3.7 3.7 7.1 0.52
escape gen 3.7 3.5 7.1 0.52
asdl_generated gen 3.7 3.8 6.9 0.53
length gen 3.7 3.7 6.9 0.53
loops gen 3.8 3.7 7.1 0.54
scoped_resource gen 3.8 3.7 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
files gen 3.8 3.8 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.9 7.1 0.56
containers gen 28.5 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
asdl_generated gen 0 4 8 0.000
classes gen 0 0 8 0.000
control_flow gen 0 0 8 0.000
fib_iter gen 0 0 12 0.000
fib_recursive gen 0 4 12 0.000
files gen 0 0 8 0.000
gc_stack_roots gen 0 0 6 0.000
length gen 0 4 8 0.000
loops gen 0 0 8 0.000
modules gen 0 2 12 0.000
parse gen 0 4 16 0.000
containers gen 12 7 16 0.721
varargs gen 35 37 48 0.733
scoped_resource gen 7 8 8 0.924
escape gen 8 0 8 0.987
tuple_return_value gen 8 4 8 1.013
cartesian gen 8 0 8 1.038
cgi gen 8 4 4 2.000

raw benchmark files