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 915 0.008
modules gen 2 2 183 0.010
loops gen 4 0 295 0.012
fib_recursive gen 11 11 879 0.012
asdl_generated gen 7 11 390 0.019
parse gen 22 27 792 0.027
scoped_resource gen 47 46 1,043 0.045
tuple_return_value gen 17 7 191 0.089
files gen 7 4 76 0.098
gc_stack_roots gen 2 0 16 0.109
containers gen 15 0 124 0.124
classes gen 3 3 23 0.137
length gen 37 41 215 0.172
escape gen 92 96 418 0.220
cartesian gen 89 71 339 0.262
cgi gen 248 251 522 0.475
varargs gen 8 16 12 0.690
control_flow gen 203 159 114 1.779

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.3 12.3 0.36
cgi gen 3.4 3.5 8.5 0.40
parse gen 3.8 3.9 9.0 0.42
asdl_generated 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
length gen 3.7 3.8 8.5 0.43
escape gen 3.7 3.7 8.4 0.44
control_flow gen 3.8 3.7 8.5 0.45
fib_iter gen 3.8 3.7 8.5 0.45
files gen 3.8 3.7 8.5 0.45
loops gen 3.8 3.8 8.5 0.45
fib_recursive gen 3.8 3.8 8.4 0.45
scoped_resource gen 3.8 3.8 8.4 0.45
tuple_return_value gen 3.8 3.8 8.4 0.45
modules gen 3.9 3.7 8.5 0.46
containers gen 28.5 28.4 49.2 0.58
varargs gen 5.5 5.5 8.5 0.65

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
classes gen 0 0 16 0.000
containers gen 0 15 20 0.000
fib_iter gen 0 0 4 0.000
fib_recursive gen 0 0 12 0.000
files gen 0 4 8 0.000
gc_stack_roots gen 0 2 4 0.000
loops gen 0 3 8 0.000
modules gen 0 0 8 0.000
scoped_resource gen 0 0 8 0.000
tuple_return_value gen 3 11 8 0.429
control_flow gen 4 4 8 0.506
cartesian gen 4 16 8 0.506
cgi gen 8 4 12 0.665
length gen 8 4 12 0.688
varargs gen 58 51 68 0.852
parse gen 7 0 8 0.906
escape gen 12 8 8 1.508
asdl_generated gen 4 0 0 inf

raw benchmark files