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
gc_stack_roots gen 0 2 2 0.000
fib_iter gen 7 7 894 0.007
loops gen 3 1 293 0.009
modules gen 2 2 174 0.010
fib_recursive gen 10 8 875 0.011
asdl_generated gen 9 11 379 0.025
parse gen 28 22 761 0.036
scoped_resource gen 44 42 1,074 0.041
containers gen 6 6 114 0.054
files gen 6 5 71 0.089
tuple_return_value gen 18 17 188 0.095
classes gen 3 2 23 0.137
length gen 41 40 206 0.197
cartesian gen 80 78 331 0.241
escape gen 99 102 355 0.278
cgi gen 262 264 513 0.512
varargs gen 19 18 22 0.854
control_flow gen 208 158 109 1.911

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.7 3.9 7.6 0.48
cartesian gen 3.5 3.7 6.9 0.51
gc_stack_roots gen 3.5 3.4 6.9 0.51
scoped_resource gen 3.7 3.7 7.1 0.52
cgi gen 3.7 3.7 6.9 0.53
escape gen 3.7 3.8 6.9 0.53
loops gen 3.8 3.8 7.1 0.54
tuple_return_value gen 3.8 3.7 7.1 0.54
asdl_generated gen 3.7 3.7 6.8 0.54
control_flow gen 3.8 3.8 6.9 0.55
fib_iter gen 3.8 3.7 6.9 0.55
fib_recursive gen 3.8 3.8 6.9 0.55
files gen 3.8 3.7 6.9 0.55
length gen 3.8 3.7 6.9 0.55
modules gen 3.8 3.8 6.9 0.55
containers gen 28.6 28.8 47.8 0.60
varargs gen 5.6 5.5 6.9 0.81

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
classes gen 0 1 7 0.000
modules gen 0 0 8 0.000
fib_recursive gen 1 2 8 0.119
loops gen 1 2 7 0.128
fib_iter gen 1 1 7 0.135
control_flow gen 1 0 6 0.168
asdl_generated gen 1 0 6 0.176
gc_stack_roots gen 2 0 9 0.183
containers gen 5 5 21 0.245
files gen 1 3 4 0.265
tuple_return_value gen 2 2 6 0.331
parse gen 3 5 5 0.590
length gen 4 3 6 0.661
varargs gen 21 21 22 0.944
escape gen 7 7 6 1.165
cgi gen 4 5 3 1.331
cartesian gen 10 7 5 1.995
scoped_resource gen 3 3 1 3.024

raw benchmark files