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 3 3 359 0.002
modules gen 1 1 1 232 0.003
fib_recursive gen 4 6 4 1,115 0.004
fib_iter gen 6 6 7 967 0.006
asdl_generated gen 8 9 8 511 0.016
scoped_resource gen 28 25 26 1,373 0.021
parse gen 25 22 24 946 0.026
containers gen 5 4 5 131 0.037
classes gen 1 3 2 35 0.038
files gen 5 6 6 100 0.048
gc_stack_roots gen 1 1 1 13 0.055
tuple_return_value gen 15 16 13 247 0.061
length gen 37 35 37 249 0.149
cartesian gen 71 70 69 401 0.177
escape gen 93 117 93 430 0.216
cgi gen 253 252 258 721 0.351
varargs gen 18 17 17 30 0.605
control_flow gen 137 178 134 150 0.919

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.5 0.39
gc_stack_roots gen 3.3 3.4 3.3 7.6 0.43
asdl_generated gen 3.4 3.4 3.3 7.6 0.45
cartesian gen 3.5 3.5 3.4 7.7 0.46
length gen 3.5 3.7 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.4 3.4 7.6 0.47
fib_iter gen 3.5 3.7 3.5 7.6 0.47
escape gen 3.7 3.4 3.5 7.7 0.47
loops gen 3.7 3.7 3.7 7.7 0.47
modules gen 3.7 3.7 3.7 7.7 0.47
parse gen 3.8 3.7 3.8 8.0 0.47
fib_recursive gen 3.7 3.5 3.4 7.6 0.48
files gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.3 28.5 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 2 2 8 0.000
tuple_return_value gen 0 0 2 7 0.000
modules gen 1 0 0 10 0.072
gc_stack_roots gen 1 1 0 8 0.089
parse gen 1 5 1 8 0.123
fib_iter gen 1 1 0 7 0.144
classes gen 1 0 1 8 0.169
asdl_generated gen 2 1 2 9 0.220
fib_recursive gen 2 0 2 8 0.223
files gen 2 1 1 8 0.239
loops gen 2 0 0 7 0.240
scoped_resource gen 2 6 4 8 0.254
cgi gen 5 2 2 13 0.385
containers gen 9 10 8 21 0.413
length gen 2 1 2 4 0.503
cartesian gen 4 10 6 7 0.572
varargs gen 20 22 21 26 0.776
escape gen 5 3 5 6 0.832

raw benchmark files