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
fib_recursive gen 5 5 6 1,079 0.004
fib_iter gen 4 7 7 953 0.005
modules gen 2 1 0 238 0.006
loops gen 3 2 1 359 0.007
asdl_generated gen 9 7 7 507 0.018
scoped_resource gen 26 29 27 1,387 0.019
parse gen 23 26 28 941 0.024
containers gen 5 8 8 123 0.042
files gen 6 6 6 107 0.054
tuple_return_value gen 14 17 14 249 0.058
classes gen 3 1 2 35 0.082
gc_stack_roots gen 1 2 0 15 0.101
length gen 33 30 32 241 0.139
cartesian gen 68 73 71 397 0.171
escape gen 95 95 91 431 0.220
cgi gen 247 252 257 751 0.329
varargs gen 20 16 16 35 0.588
control_flow gen 135 178 136 158 0.853

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.3 4.3 4.5 11.5 0.38
cgi gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.5 3.3 7.6 0.45
parse gen 3.7 3.9 3.7 8.1 0.45
escape gen 3.5 3.4 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.5 3.7 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
fib_recursive gen 3.7 3.7 3.5 7.6 0.48
files gen 3.8 3.7 3.7 7.7 0.49
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.5 28.5 48.4 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
classes gen 0 2 1 9 0.000
gc_stack_roots gen 0 0 1 7 0.000
loops gen 0 1 2 8 0.000
modules gen 0 0 1 9 0.000
tuple_return_value gen 1 0 1 10 0.103
files gen 1 1 1 8 0.120
asdl_generated gen 1 3 3 7 0.146
escape gen 2 10 6 10 0.200
fib_recursive gen 2 1 0 7 0.260
fib_iter gen 3 0 0 10 0.265
parse gen 3 1 1 10 0.295
containers gen 8 6 7 27 0.309
control_flow gen 2 2 0 4 0.499
cgi gen 3 2 3 5 0.601
length gen 5 7 6 8 0.615
scoped_resource gen 4 2 3 5 0.798
varargs gen 18 23 23 22 0.842
cartesian gen 8 5 4 6 1.333

raw benchmark files