mycpp Code Generation

Measure the speedup from mycpp, and the resource usage.

Source code: oils/mycpp/examples

User Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 1 15 0.000
loops gen 1 2 1 346 0.002
modules gen 1 0 0 236 0.003
fib_recursive gen 6 5 5 1,075 0.006
fib_iter gen 7 6 6 945 0.007
asdl_generated gen 7 8 9 520 0.013
scoped_resource gen 29 28 29 1,384 0.021
parse gen 24 23 20 965 0.025
containers gen 4 4 4 129 0.032
files gen 6 6 4 100 0.059
tuple_return_value gen 15 17 14 247 0.062
classes gen 3 1 3 32 0.083
length gen 34 33 37 248 0.136
escape gen 89 100 92 435 0.204
cartesian gen 91 76 68 390 0.234
cgi gen 248 249 253 720 0.344
varargs gen 20 16 20 28 0.709
control_flow gen 136 181 134 151 0.903

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++-NoSouffle C++-Souffle Python C++ : Python
classes gen 4.5 4.3 4.3 11.6 0.38
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
asdl_generated gen 3.4 3.4 3.5 7.6 0.45
cartesian gen 3.4 3.4 3.4 7.6 0.45
escape gen 3.4 3.4 3.5 7.6 0.45
cgi gen 3.5 3.4 3.4 7.7 0.46
fib_iter gen 3.5 3.7 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.7 7.7 0.46
modules gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.4 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
files gen 3.7 3.7 3.8 7.7 0.47
parse gen 3.8 3.9 3.8 8.0 0.47
length gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.7 0.49
containers gen 28.3 28.5 28.5 48.2 0.59
varargs gen 5.6 5.4 5.4 7.6 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 1 0 11 0.000
fib_iter gen 0 1 1 9 0.000
fib_recursive gen 0 1 2 8 0.000
modules gen 1 1 1 9 0.079
tuple_return_value gen 1 0 1 9 0.114
files gen 1 1 3 7 0.140
loops gen 2 1 2 12 0.141
scoped_resource gen 1 4 1 7 0.143
parse gen 2 4 5 12 0.172
gc_stack_roots gen 1 1 1 5 0.274
control_flow gen 2 1 1 6 0.332
asdl_generated gen 3 2 1 7 0.423
containers gen 9 10 9 22 0.427
length gen 5 3 2 8 0.621
varargs gen 18 22 18 27 0.661
cgi gen 4 3 5 6 0.665
escape gen 8 5 6 8 1.005
cartesian gen 10 4 7 5 2.004

raw benchmark files