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++-Souffle Python C++ : Python
modules gen 1 1 245 0.003
fib_recursive gen 5 6 1,109 0.005
fib_iter gen 6 7 987 0.006
loops gen 3 3 358 0.008
asdl_generated gen 9 9 515 0.018
scoped_resource gen 28 27 1,377 0.020
parse gen 26 25 963 0.027
files gen 4 7 101 0.035
classes gen 2 3 34 0.054
containers gen 8 4 125 0.065
tuple_return_value gen 16 13 248 0.065
gc_stack_roots gen 2 1 14 0.115
length gen 35 34 236 0.147
cartesian gen 74 68 391 0.188
escape gen 102 99 427 0.239
cgi gen 252 257 729 0.345
varargs gen 12 17 29 0.412
control_flow gen 179 135 144 1.243

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++-Souffle Python C++ : Python
classes gen 4.2 4.3 11.5 0.36
asdl_generated gen 3.4 3.4 7.6 0.45
cartesian gen 3.4 3.5 7.6 0.45
fib_iter gen 3.4 3.7 7.6 0.45
gc_stack_roots gen 3.4 3.3 7.6 0.45
modules gen 3.5 3.7 7.9 0.45
escape gen 3.5 3.5 7.7 0.46
length gen 3.5 3.7 7.7 0.46
parse gen 3.7 3.8 7.9 0.46
cgi gen 3.5 3.5 7.6 0.47
fib_recursive gen 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.7 7.6 0.47
files gen 3.7 3.8 7.6 0.48
loops gen 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.7 7.6 0.50
tuple_return_value gen 3.8 3.8 7.6 0.50
containers gen 28.7 28.5 48.3 0.59
varargs gen 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-Souffle Python C++ : Python
gc_stack_roots gen 0 0 7 0.000
loops gen 1 0 10 0.090
control_flow gen 1 1 10 0.100
classes gen 1 0 9 0.102
tuple_return_value gen 1 2 9 0.112
modules gen 1 0 6 0.120
asdl_generated gen 1 1 8 0.126
cgi gen 2 5 12 0.166
fib_recursive gen 1 0 5 0.212
containers gen 6 10 27 0.226
length gen 2 6 8 0.248
fib_iter gen 1 1 4 0.254
parse gen 2 2 7 0.282
scoped_resource gen 4 3 10 0.401
files gen 4 0 7 0.510
escape gen 3 4 4 0.749
varargs gen 29 22 27 1.069
cartesian gen 7 7 5 1.393

raw benchmark files