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
loops gen 1 2 3 368 0.002
fib_recursive gen 6 5 5 1,098 0.006
modules gen 1 0 1 236 0.006
fib_iter gen 7 7 6 956 0.007
asdl_generated gen 9 8 7 517 0.017
scoped_resource gen 29 27 26 1,369 0.021
parse gen 22 24 25 951 0.023
tuple_return_value gen 12 16 13 249 0.049
containers gen 7 3 7 131 0.053
classes gen 2 2 2 34 0.054
files gen 6 7 6 102 0.059
length gen 30 32 36 243 0.125
cartesian gen 72 75 68 399 0.179
escape gen 95 99 94 442 0.216
cgi gen 257 251 258 725 0.355
varargs gen 15 17 20 30 0.502
control_flow gen 134 177 145 148 0.907

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.3 11.5 0.38
cartesian gen 3.4 3.5 3.5 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.3 7.7 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
fib_iter gen 3.4 3.4 3.7 7.6 0.45
loops gen 3.4 3.8 3.5 7.6 0.45
escape gen 3.4 3.4 3.5 7.5 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
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.7 3.8 8.0 0.47
control_flow gen 3.7 3.8 3.7 7.6 0.48
files gen 3.7 3.9 3.7 7.6 0.48
length gen 3.7 3.7 3.4 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
containers gen 28.5 28.5 28.4 48.1 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
fib_iter gen 0 0 1 9 0.000
fib_recursive gen 0 1 1 11 0.000
modules gen 0 1 0 9 0.000
classes gen 1 1 1 9 0.102
asdl_generated gen 1 2 3 9 0.111
files gen 1 0 1 7 0.144
loops gen 2 1 0 7 0.240
control_flow gen 2 2 2 8 0.249
gc_stack_roots gen 1 0 0 5 0.283
containers gen 7 12 7 24 0.290
cgi gen 4 1 2 10 0.399
tuple_return_value gen 3 1 2 7 0.436
cartesian gen 4 5 8 9 0.442
parse gen 4 3 1 8 0.490
escape gen 3 6 4 4 0.752
varargs gen 23 22 19 27 0.856
scoped_resource gen 5 5 4 5 0.996
length gen 8 5 3 7 1.124

raw benchmark files