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 234 0.000
fib_recursive gen 5 6 6 1,082 0.005
fib_iter gen 6 6 6 961 0.006
loops gen 3 2 1 364 0.007
asdl_generated gen 9 10 9 511 0.018
scoped_resource gen 27 27 26 1,357 0.020
parse gen 22 23 21 952 0.024
classes gen 1 1 1 31 0.029
containers gen 6 10 5 128 0.047
tuple_return_value gen 13 14 13 253 0.052
files gen 6 6 5 100 0.057
length gen 36 32 37 241 0.150
cartesian gen 68 73 67 387 0.176
escape gen 91 98 89 412 0.221
cgi gen 256 247 258 741 0.346
control_flow gen 133 178 131 158 0.843
varargs gen 22 21 22 24 0.934

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.3 4.3 11.5 0.38
gc_stack_roots gen 3.3 3.4 3.4 7.6 0.43
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.4 3.4 3.7 7.6 0.45
length gen 3.5 3.7 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.7 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.7 3.7 3.5 7.7 0.47
parse gen 3.8 3.9 3.8 7.9 0.48
control_flow gen 3.7 3.8 3.7 7.6 0.48
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.8 7.6 0.48
files gen 3.8 3.7 3.8 7.6 0.50
containers gen 28.4 28.5 28.5 48.1 0.59
varargs gen 5.4 5.5 5.4 7.6 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
loops gen 0 1 2 8 0.000
asdl_generated gen 1 0 1 10 0.101
fib_recursive gen 1 0 0 8 0.133
classes gen 2 2 2 12 0.148
modules gen 1 1 0 9 0.159
files gen 1 1 2 7 0.162
fib_iter gen 1 1 1 6 0.171
gc_stack_roots gen 1 1 0 5 0.283
containers gen 8 5 9 25 0.321
length gen 3 4 2 9 0.325
tuple_return_value gen 2 2 2 6 0.335
parse gen 3 4 4 9 0.340
scoped_resource gen 3 4 4 8 0.376
control_flow gen 3 1 4 7 0.429
escape gen 6 6 9 13 0.457
varargs gen 16 18 17 34 0.479
cgi gen 5 6 2 10 0.500
cartesian gen 7 7 9 9 0.777

raw benchmark files