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 4 915 0.004
modules gen 2 2 174 0.010
fib_recursive gen 11 11 883 0.012
loops gen 4 0 286 0.013
asdl_generated gen 11 8 376 0.029
parse gen 30 22 762 0.039
scoped_resource gen 47 46 1,051 0.045
containers gen 8 11 117 0.068
tuple_return_value gen 14 15 190 0.072
files gen 7 0 69 0.105
classes gen 3 3 20 0.167
length gen 41 38 210 0.195
cartesian gen 77 80 326 0.236
escape gen 106 90 352 0.300
cgi gen 269 260 507 0.531
varargs gen 19 12 24 0.811
control_flow gen 207 158 107 1.928
gc_stack_roots gen 2 2 0 inf

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.6 0.42
parse gen 3.8 3.8 7.5 0.51
cartesian gen 3.5 3.7 6.9 0.51
gc_stack_roots gen 3.5 3.5 6.9 0.51
cgi gen 3.7 3.5 7.1 0.52
scoped_resource gen 3.7 3.8 7.1 0.52
escape gen 3.7 3.7 6.9 0.53
loops gen 3.8 3.8 7.1 0.54
asdl_generated gen 3.8 3.7 6.9 0.55
fib_iter gen 3.8 3.9 6.9 0.55
fib_recursive gen 3.8 3.8 6.9 0.55
files gen 3.8 3.7 6.9 0.55
length 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.7 6.9 0.55
control_flow gen 3.9 3.8 7.1 0.56
containers gen 28.5 28.4 47.5 0.60
varargs gen 5.6 5.5 7.1 0.80

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
asdl_generated gen 0 4 4 0.000
cgi gen 0 8 8 0.000
classes gen 0 0 12 0.000
escape gen 0 16 8 0.000
files gen 0 8 8 0.000
gc_stack_roots gen 0 0 12 0.000
loops gen 0 3 12 0.000
modules gen 0 0 8 0.000
parse gen 0 7 12 0.000
containers gen 8 4 20 0.395
control_flow gen 4 4 8 0.501
fib_iter gen 4 4 4 0.956
varargs gen 47 54 48 0.973
length gen 4 8 4 1.033
cartesian gen 15 8 12 1.289
tuple_return_value gen 7 4 4 1.696
fib_recursive gen 0 0 0 NA
scoped_resource gen 0 0 0 NA

raw benchmark files