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 1 1 16 0.000
modules gen 0 1 1 239 0.000
loops gen 1 2 3 348 0.002
fib_recursive gen 5 6 4 1,087 0.005
fib_iter gen 7 6 7 1,007 0.007
asdl_generated gen 9 9 7 504 0.018
scoped_resource gen 27 30 26 1,404 0.019
parse gen 24 25 26 954 0.026
classes gen 1 3 3 30 0.044
files gen 5 6 6 103 0.047
tuple_return_value gen 14 13 13 253 0.055
containers gen 7 6 3 124 0.056
length gen 31 33 34 242 0.126
cartesian gen 70 73 69 396 0.177
escape gen 93 97 94 430 0.216
cgi gen 257 248 259 735 0.349
varargs gen 19 12 17 32 0.591
control_flow gen 134 178 135 147 0.908

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.3 4.5 4.5 11.5 0.38
asdl_generated gen 3.4 3.4 3.3 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.3 7.7 0.44
escape gen 3.4 3.5 3.5 7.6 0.45
cartesian gen 3.4 3.4 3.4 7.5 0.46
cgi gen 3.5 3.4 3.4 7.7 0.46
length gen 3.5 3.7 3.7 7.6 0.47
loops gen 3.5 3.7 3.7 7.6 0.47
modules gen 3.5 3.5 3.7 7.6 0.47
scoped_resource gen 3.5 3.7 3.5 7.6 0.47
fib_iter gen 3.7 3.7 3.7 7.7 0.47
fib_recursive gen 3.7 3.5 3.7 7.7 0.47
parse gen 3.8 3.8 3.9 8.0 0.48
files gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.4 28.3 28.7 48.2 0.59
varargs gen 5.5 5.4 5.4 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 1 0 7 0.000
classes gen 1 0 0 13 0.102
fib_recursive gen 1 0 2 10 0.105
parse gen 1 2 0 9 0.108
asdl_generated gen 1 1 3 9 0.110
modules gen 1 0 0 10 0.144
tuple_return_value gen 1 4 2 6 0.166
loops gen 2 1 0 9 0.190
containers gen 7 8 11 28 0.248
gc_stack_roots gen 1 0 0 5 0.268
cgi gen 3 3 2 8 0.374
files gen 2 1 1 5 0.388
control_flow gen 2 1 1 5 0.399
scoped_resource gen 3 1 4 6 0.498
escape gen 5 8 3 9 0.555
varargs gen 19 27 21 24 0.788
length gen 8 4 5 10 0.816
cartesian gen 5 6 5 3 1.667

raw benchmark files