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
classes gen 0 0 38 0.000
modules gen 0 2 178 0.000
fib_iter gen 8 4 881 0.009
fib_recursive gen 11 11 906 0.012
loops gen 4 3 298 0.013
asdl_generated gen 7 11 374 0.020
parse gen 26 23 781 0.034
scoped_resource gen 47 42 1,028 0.046
files gen 4 0 72 0.055
containers gen 8 8 111 0.071
tuple_return_value gen 20 16 188 0.108
gc_stack_roots gen 2 0 12 0.161
length gen 45 41 203 0.222
cartesian gen 78 75 330 0.237
escape gen 107 101 350 0.304
cgi gen 255 261 507 0.504
varargs gen 8 8 12 0.680
control_flow gen 210 155 105 2.004

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.3 4.5 10.8 0.40
cartesian gen 3.5 3.5 7.1 0.50
parse gen 3.8 3.8 7.5 0.51
gc_stack_roots gen 3.5 3.5 6.9 0.51
asdl_generated gen 3.7 3.7 6.9 0.53
escape gen 3.7 3.7 6.9 0.53
files gen 3.7 3.7 6.9 0.53
loops gen 3.8 3.8 7.1 0.54
tuple_return_value gen 3.8 3.8 7.1 0.54
cgi gen 3.7 3.8 6.8 0.54
length gen 3.7 3.8 6.8 0.54
control_flow gen 3.8 3.9 6.9 0.55
fib_iter gen 3.8 3.7 6.9 0.55
fib_recursive gen 3.8 3.5 6.9 0.55
scoped_resource gen 3.8 3.7 6.9 0.55
modules gen 3.9 3.5 7.1 0.56
containers gen 28.7 28.5 47.5 0.60
varargs gen 5.5 5.4 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
cgi gen 0 8 12 0.000
control_flow gen 0 4 12 0.000
escape gen 0 8 4 0.000
fib_iter gen 0 4 8 0.000
fib_recursive gen 0 0 12 0.000
length gen 0 4 8 0.000
loops gen 0 0 8 0.000
scoped_resource gen 0 4 8 0.000
tuple_return_value gen 0 4 8 0.000
modules gen 2 0 8 0.271
containers gen 8 8 28 0.285
asdl_generated gen 4 0 8 0.461
classes gen 3 3 8 0.462
parse gen 4 5 4 0.937
varargs gen 58 58 61 0.953
files gen 4 8 4 0.999
cartesian gen 12 12 4 3.065
gc_stack_roots gen 0 2 0 NA

raw benchmark files