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
modules gen 0 2 178 0.000
fib_iter gen 8 8 893 0.009
fib_recursive gen 8 11 878 0.009
loops gen 4 3 305 0.012
asdl_generated gen 11 11 379 0.028
parse gen 29 27 776 0.038
scoped_resource gen 49 46 1,047 0.047
files gen 7 4 73 0.100
tuple_return_value gen 21 18 191 0.108
containers gen 12 0 102 0.115
length gen 40 40 209 0.193
cartesian gen 80 79 326 0.246
escape gen 96 92 354 0.272
classes gen 3 3 11 0.280
cgi gen 264 260 682 0.386
control_flow gen 206 161 105 1.960
varargs gen 19 31 8 2.297
gc_stack_roots gen 2 0 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.8 0.41
parse gen 3.8 3.9 7.5 0.51
cartesian gen 3.5 3.5 6.9 0.51
gc_stack_roots gen 3.5 3.5 6.9 0.51
asdl_generated gen 3.7 3.5 6.9 0.53
cgi gen 3.7 3.5 6.9 0.53
escape gen 3.7 3.5 6.9 0.53
loops gen 3.8 3.8 7.1 0.54
scoped_resource gen 3.8 3.8 7.1 0.54
tuple_return_value gen 3.7 3.8 6.8 0.54
fib_iter gen 3.8 3.7 6.9 0.55
fib_recursive gen 3.8 3.7 6.9 0.55
files gen 3.8 3.7 6.9 0.55
length gen 3.8 3.7 6.9 0.55
control_flow gen 3.9 3.8 6.9 0.57
modules gen 3.9 3.8 6.9 0.57
containers gen 28.7 28.7 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 0 4 0.000
classes gen 0 0 19 0.000
files gen 0 4 4 0.000
gc_stack_roots gen 0 2 12 0.000
loops gen 0 0 4 0.000
parse gen 0 0 4 0.000
scoped_resource gen 0 0 12 0.000
containers gen 4 15 37 0.106
modules gen 2 0 8 0.229
control_flow gen 4 0 8 0.509
varargs gen 47 35 63 0.735
fib_recursive gen 4 0 4 0.987
cgi gen 8 8 8 1.001
length gen 4 4 4 1.006
cartesian gen 12 8 8 1.514
escape gen 8 12 4 1.997
fib_iter gen 0 0 0 NA
tuple_return_value gen 0 0 0 NA

raw benchmark files