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 1 3 359 0.004
fib_recursive gen 5 5 5 1,099 0.005
modules gen 1 0 1 251 0.006
fib_iter gen 6 6 7 968 0.006
asdl_generated gen 9 8 6 498 0.019
scoped_resource gen 29 26 30 1,363 0.021
parse gen 23 24 23 953 0.024
containers gen 5 6 6 124 0.041
files gen 4 6 6 98 0.041
classes gen 1 3 1 31 0.044
gc_stack_roots gen 1 1 1 14 0.049
tuple_return_value gen 14 16 13 245 0.057
length gen 36 34 37 241 0.149
cartesian gen 72 75 69 393 0.184
escape gen 95 98 95 441 0.216
cgi gen 255 250 257 736 0.347
varargs gen 18 17 16 24 0.738
control_flow gen 134 179 134 145 0.927

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.2 4.5 4.3 11.5 0.37
asdl_generated gen 3.3 3.4 3.4 7.7 0.42
escape gen 3.4 3.5 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.5 7.7 0.44
cartesian gen 3.5 3.5 3.5 7.7 0.46
modules gen 3.5 3.5 3.7 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.5 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.8 3.7 7.7 0.47
parse gen 3.8 3.8 3.7 8.0 0.47
control_flow gen 3.7 3.7 3.8 7.6 0.48
length gen 3.7 3.7 3.5 7.6 0.48
loops gen 3.7 3.7 3.4 7.6 0.48
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.3 28.3 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
modules gen 0 1 1 9 0.000
scoped_resource gen 1 6 0 10 0.101
classes gen 1 0 2 13 0.105
gc_stack_roots gen 1 1 0 6 0.114
tuple_return_value gen 1 0 2 8 0.126
fib_iter gen 1 1 0 8 0.129
fib_recursive gen 1 1 1 7 0.150
loops gen 1 2 0 7 0.181
parse gen 3 3 3 12 0.245
cartesian gen 3 5 5 11 0.271
control_flow gen 3 0 1 10 0.299
containers gen 9 8 8 27 0.336
asdl_generated gen 3 2 4 9 0.342
files gen 3 1 1 8 0.380
length gen 3 3 4 7 0.439
cgi gen 4 3 4 7 0.570
escape gen 4 7 4 7 0.572
varargs gen 21 22 22 33 0.626

raw benchmark files