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 19 0.000
fib_iter gen 8 8 892 0.008
fib_recursive gen 11 11 889 0.012
modules gen 2 0 183 0.012
loops gen 4 3 289 0.014
asdl_generated gen 7 11 376 0.019
parse gen 19 23 766 0.024
scoped_resource gen 48 46 1,052 0.046
containers gen 8 11 125 0.061
tuple_return_value gen 20 15 190 0.108
files gen 7 4 67 0.111
length gen 41 41 203 0.201
cartesian gen 76 79 325 0.233
escape gen 89 100 350 0.254
cgi gen 251 247 520 0.482
gc_stack_roots gen 2 2 4 0.490
varargs gen 12 23 20 0.577
control_flow gen 210 162 105 1.994

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.2 10.7 0.41
parse gen 3.7 3.8 7.6 0.48
cgi gen 3.5 3.7 6.9 0.51
gc_stack_roots gen 3.5 3.7 6.9 0.51
escape gen 3.7 3.7 7.1 0.52
asdl_generated gen 3.7 3.5 6.9 0.53
fib_iter gen 3.7 3.8 6.9 0.53
fib_recursive gen 3.7 3.8 6.9 0.53
tuple_return_value gen 3.7 3.7 6.9 0.53
control_flow gen 3.8 3.9 7.1 0.54
files gen 3.8 3.7 7.1 0.54
scoped_resource gen 3.8 3.8 7.1 0.54
cartesian gen 3.8 3.5 6.9 0.55
length gen 3.8 3.7 6.9 0.55
modules gen 3.8 3.8 6.9 0.55
loops gen 3.9 3.7 7.1 0.56
containers gen 28.7 28.6 47.6 0.60
varargs gen 5.5 5.6 6.9 0.79

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
control_flow gen 0 0 8 0.000
fib_iter gen 0 0 8 0.000
files gen 0 4 8 0.000
gc_stack_roots gen 0 0 8 0.000
loops gen 0 0 8 0.000
modules gen 0 2 4 0.000
scoped_resource gen 0 0 4 0.000
tuple_return_value gen 0 4 4 0.000
classes gen 3 3 11 0.291
containers gen 8 4 12 0.634
asdl_generated gen 4 0 4 0.898
parse gen 11 4 12 0.933
cgi gen 4 8 4 0.995
length gen 4 4 4 1.007
varargs gen 55 43 53 1.036
escape gen 15 4 8 1.943
cartesian gen 16 8 8 1.991
fib_recursive gen 0 0 0 NA

raw benchmark files