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 7 7 942 0.007
loops gen 3 2 300 0.009
modules gen 2 1 189 0.010
fib_recursive gen 11 10 921 0.012
asdl_generated gen 9 8 387 0.024
parse gen 26 26 764 0.034
classes gen 1 2 28 0.038
scoped_resource gen 43 40 1,041 0.041
gc_stack_roots gen 1 2 12 0.075
containers gen 9 7 117 0.077
files gen 6 5 75 0.084
tuple_return_value gen 18 18 198 0.093
length gen 37 40 212 0.177
cartesian gen 88 81 338 0.261
escape gen 101 99 361 0.281
cgi gen 252 254 536 0.471
varargs gen 17 13 25 0.698
control_flow gen 205 161 118 1.736
pea_hello gen NA NA 13 NA

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 12.3 0.36
scoped_resource gen 3.5 3.7 8.5 0.42
tuple_return_value gen 3.5 3.8 8.5 0.42
cgi gen 3.5 3.7 8.4 0.42
gc_stack_roots gen 3.5 3.4 8.4 0.42
cartesian gen 3.7 3.7 8.5 0.43
modules gen 3.7 3.7 8.5 0.43
asdl_generated gen 3.7 3.7 8.4 0.44
escape gen 3.7 3.8 8.4 0.44
parse gen 3.9 3.7 9.0 0.44
control_flow gen 3.8 3.9 8.5 0.45
fib_iter gen 3.8 3.8 8.4 0.45
fib_recursive gen 3.8 3.8 8.4 0.45
files gen 3.8 3.8 8.4 0.45
length gen 3.8 3.8 8.4 0.45
loops gen 3.8 3.8 8.4 0.45
containers gen 28.6 28.9 49.1 0.58
varargs gen 5.5 5.5 8.5 0.65
pea_hello gen NA NA 8.3 NA

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
fib_recursive gen 0 1 7 0.000
modules gen 0 1 8 0.000
containers gen 3 4 29 0.103
files gen 1 3 9 0.116
tuple_return_value gen 1 0 8 0.128
gc_stack_roots gen 1 0 7 0.128
fib_iter gen 1 1 7 0.137
classes gen 2 1 10 0.216
loops gen 2 1 7 0.247
cgi gen 2 0 7 0.285
parse gen 4 1 14 0.287
asdl_generated gen 2 3 7 0.294
cartesian gen 3 5 8 0.377
scoped_resource gen 5 5 8 0.624
varargs gen 24 26 29 0.849
escape gen 4 5 4 1.001
length gen 7 6 6 1.151
control_flow gen 4 1 3 1.326
pea_hello gen NA NA 5 NA

raw benchmark files