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,146 0.005
loops gen 2 1 1 372 0.005
modules gen 1 0 1 236 0.006
fib_iter gen 6 7 7 981 0.006
asdl_generated gen 8 7 6 518 0.015
scoped_resource gen 28 30 22 1,367 0.021
parse gen 20 24 21 951 0.021
containers gen 4 6 4 123 0.031
gc_stack_roots gen 1 1 0 13 0.054
files gen 6 6 5 99 0.058
classes gen 2 1 3 30 0.060
tuple_return_value gen 15 16 14 248 0.061
length gen 36 32 32 238 0.152
cartesian gen 67 71 72 388 0.173
escape gen 91 97 92 429 0.212
cgi gen 258 239 258 727 0.355
varargs gen 17 15 18 30 0.570
control_flow gen 133 180 135 148 0.900

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.5 4.3 11.5 0.39
asdl_generated gen 3.3 3.3 3.4 7.7 0.42
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
fib_iter gen 3.4 3.5 3.5 7.6 0.45
fib_recursive gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.7 3.7 7.7 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
cgi gen 3.5 3.4 3.7 7.6 0.47
length gen 3.5 3.8 3.5 7.6 0.47
loops gen 3.5 3.7 3.5 7.6 0.47
scoped_resource gen 3.7 3.5 3.5 7.7 0.47
escape gen 3.7 3.5 3.4 7.6 0.48
files gen 3.7 3.8 3.7 7.6 0.48
parse gen 3.9 3.8 3.8 8.0 0.49
control_flow gen 3.8 3.7 3.8 7.7 0.49
tuple_return_value gen 3.8 3.8 3.7 7.7 0.49
containers gen 28.5 28.4 28.4 48.1 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
modules gen 0 1 0 8 0.000
tuple_return_value gen 0 0 1 7 0.000
classes gen 1 2 0 15 0.059
gc_stack_roots gen 1 0 1 8 0.088
loops gen 1 2 2 8 0.105
fib_recursive gen 1 1 0 8 0.129
files gen 1 1 2 7 0.137
fib_iter gen 1 0 0 6 0.168
length gen 2 4 7 11 0.182
asdl_generated gen 2 3 4 10 0.199
scoped_resource gen 2 2 8 9 0.224
control_flow gen 2 0 1 8 0.250
cgi gen 3 3 3 10 0.300
containers gen 10 8 10 32 0.304
escape gen 6 7 6 12 0.495
cartesian gen 6 9 3 11 0.545
parse gen 5 3 4 8 0.635
varargs gen 21 23 20 26 0.812

raw benchmark files