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
loops gen 1 2 1 362 0.002
fib_recursive gen 6 8 4 1,104 0.006
modules gen 1 1 1 238 0.006
fib_iter gen 7 6 6 977 0.007
scoped_resource gen 25 27 26 1,405 0.018
asdl_generated gen 10 8 9 515 0.020
parse gen 25 24 22 938 0.026
containers gen 4 6 5 119 0.034
classes gen 1 1 3 37 0.036
gc_stack_roots gen 1 1 2 16 0.044
tuple_return_value gen 13 17 14 254 0.051
files gen 6 6 6 101 0.058
length gen 35 33 36 247 0.140
cartesian gen 67 74 73 395 0.170
escape gen 93 99 94 449 0.207
cgi gen 258 249 257 749 0.345
varargs gen 16 14 17 24 0.672
control_flow gen 137 178 133 147 0.934

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.6 0.37
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
escape gen 3.4 3.5 3.5 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
cartesian gen 3.5 3.5 3.4 7.7 0.46
fib_recursive gen 3.5 3.7 3.5 7.7 0.46
length gen 3.5 3.7 3.7 7.7 0.46
cgi gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.7 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
files gen 3.7 3.7 3.8 7.7 0.47
modules gen 3.7 3.7 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.8 7.6 0.48
parse gen 3.9 3.7 3.8 8.1 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.6 28.6 48.2 0.59
varargs gen 5.4 5.5 5.5 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 2 1 11 0.000
control_flow gen 0 1 2 9 0.000
fib_iter gen 0 1 1 3 0.000
fib_recursive gen 0 2 2 9 0.000
modules gen 0 1 0 7 0.000
parse gen 1 3 3 15 0.069
files gen 1 1 1 8 0.122
gc_stack_roots gen 1 0 0 5 0.142
loops gen 2 1 1 9 0.185
classes gen 1 1 0 7 0.189
containers gen 10 9 10 35 0.290
tuple_return_value gen 2 0 1 6 0.333
length gen 4 4 3 8 0.495
cgi gen 4 2 3 7 0.572
varargs gen 23 25 22 33 0.702
scoped_resource gen 5 5 4 6 0.814
cartesian gen 8 6 2 7 1.144
escape gen 6 7 4 4 1.501

raw benchmark files