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
modules gen 1 2 1 239 0.003
loops gen 1 3 2 361 0.004
fib_recursive gen 6 6 5 1,101 0.006
fib_iter gen 7 7 6 958 0.007
asdl_generated gen 9 6 7 509 0.018
scoped_resource gen 28 30 28 1,380 0.020
parse gen 23 26 25 968 0.024
classes gen 1 1 2 36 0.028
tuple_return_value gen 12 16 11 250 0.048
containers gen 7 4 4 132 0.051
files gen 7 6 7 100 0.071
gc_stack_roots gen 1 1 1 16 0.087
length gen 37 35 33 248 0.149
cartesian gen 69 76 71 392 0.176
escape gen 96 104 91 429 0.223
cgi gen 265 247 257 747 0.354
varargs gen 14 15 16 28 0.505
control_flow gen 136 178 136 143 0.946

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.2 11.6 0.38
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.4 3.4 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
parse gen 3.7 3.8 3.8 8.1 0.45
cartesian gen 3.5 3.4 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.7 3.5 7.6 0.47
fib_iter gen 3.7 3.5 3.4 7.7 0.47
modules gen 3.7 3.5 3.7 7.7 0.47
control_flow gen 3.7 3.8 3.7 7.6 0.48
length gen 3.7 3.7 3.7 7.6 0.48
scoped_resource gen 3.7 3.5 3.7 7.6 0.48
files gen 3.8 3.5 3.8 7.6 0.50
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.4 28.6 48.2 0.59
varargs gen 5.5 5.2 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 1 1 10 0.000
fib_iter gen 0 0 1 11 0.000
fib_recursive gen 0 0 1 8 0.000
files gen 0 1 0 7 0.000
gc_stack_roots gen 0 1 0 5 0.000
asdl_generated gen 1 4 3 9 0.110
loops gen 1 0 1 11 0.116
modules gen 1 0 1 3 0.239
length gen 2 2 5 8 0.250
parse gen 2 2 1 8 0.254
scoped_resource gen 2 2 2 7 0.285
classes gen 2 2 1 7 0.285
containers gen 8 11 10 25 0.307
tuple_return_value gen 3 1 4 9 0.336
escape gen 5 2 8 10 0.498
cgi gen 3 5 3 5 0.599
cartesian gen 6 4 4 8 0.753
varargs gen 25 23 23 31 0.814

raw benchmark files