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 1 7 0.000
modules gen 0 1 178 0.000
fib_iter gen 8 6 881 0.009
loops gen 3 1 295 0.009
fib_recursive gen 9 10 881 0.010
asdl_generated gen 8 10 380 0.022
parse gen 26 24 762 0.035
scoped_resource gen 45 40 1,040 0.043
containers gen 8 5 115 0.068
files gen 7 6 67 0.097
tuple_return_value gen 18 18 188 0.097
classes gen 2 3 21 0.100
length gen 45 39 213 0.210
cartesian gen 84 77 339 0.247
escape gen 103 104 345 0.300
cgi gen 267 270 513 0.520
varargs gen 18 21 12 1.494
control_flow gen 210 158 110 1.907

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.9 0.41
gc_stack_roots gen 3.4 3.5 7.1 0.48
parse gen 3.8 3.7 7.6 0.50
cartesian gen 3.5 3.7 6.9 0.51
fib_recursive gen 3.5 3.7 6.9 0.51
scoped_resource gen 3.7 3.8 7.1 0.52
asdl_generated gen 3.7 3.7 6.9 0.53
cgi gen 3.7 3.7 6.9 0.53
control_flow gen 3.7 3.7 6.9 0.53
escape gen 3.7 3.5 6.9 0.53
files gen 3.8 3.8 7.1 0.54
loops gen 3.8 3.8 7.1 0.54
fib_iter gen 3.8 3.7 6.9 0.55
tuple_return_value gen 3.8 3.8 6.9 0.55
length gen 3.8 3.5 6.8 0.56
modules gen 3.9 3.8 6.9 0.57
containers gen 28.8 28.8 47.6 0.60
varargs gen 5.4 5.5 7.1 0.76

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
fib_iter gen 0 1 5 0.000
classes gen 1 0 9 0.117
length gen 1 5 8 0.124
files gen 1 2 8 0.137
loops gen 1 2 6 0.153
containers gen 4 5 20 0.196
control_flow gen 1 1 5 0.202
fib_recursive gen 2 1 9 0.217
tuple_return_value gen 2 1 7 0.274
modules gen 2 1 5 0.341
gc_stack_roots gen 2 1 5 0.348
cgi gen 3 2 8 0.375
parse gen 3 3 7 0.420
escape gen 4 6 9 0.447
scoped_resource gen 3 6 6 0.506
varargs gen 23 20 34 0.674
asdl_generated gen 3 1 3 0.935
cartesian gen 9 9 5 1.812

raw benchmark files