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
gc_stack_roots gen 0 0 1 13 0.000
modules gen 0 0 0 232 0.000
loops gen 1 3 2 369 0.003
fib_recursive gen 5 6 5 1,108 0.005
fib_iter gen 6 6 7 953 0.006
asdl_generated gen 9 7 8 514 0.017
scoped_resource gen 28 29 27 1,371 0.021
parse gen 22 24 24 958 0.023
classes gen 1 2 1 35 0.038
tuple_return_value gen 13 16 14 245 0.053
containers gen 8 4 4 127 0.065
files gen 7 5 5 100 0.068
length gen 37 35 31 243 0.151
cartesian gen 70 78 71 396 0.177
escape gen 90 99 94 429 0.210
cgi gen 255 251 254 727 0.351
varargs gen 18 15 12 28 0.641
control_flow gen 134 178 135 146 0.917

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.5 11.5 0.39
asdl_generated gen 3.4 3.4 3.3 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
cgi gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.5 3.7 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
parse gen 3.8 3.7 3.8 8.0 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
scoped_resource gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.5 28.5 28.7 48.2 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
files gen 0 2 2 7 0.000
asdl_generated gen 1 3 2 10 0.109
fib_iter gen 1 1 0 8 0.126
fib_recursive gen 1 0 1 8 0.130
loops gen 1 0 1 8 0.156
classes gen 1 1 2 8 0.167
modules gen 1 1 1 8 0.173
containers gen 5 11 9 27 0.192
gc_stack_roots gen 1 1 0 7 0.206
scoped_resource gen 2 2 3 8 0.245
length gen 2 2 8 6 0.331
control_flow gen 2 1 1 6 0.333
tuple_return_value gen 2 0 1 6 0.334
parse gen 3 3 1 7 0.418
cgi gen 4 6 1 7 0.570
cartesian gen 5 4 4 8 0.624
varargs gen 20 23 27 29 0.687
escape gen 8 6 5 6 1.333

raw benchmark files