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 11 0.000
fib_recursive gen 6 6 5 1,075 0.006
modules gen 1 1 0 234 0.006
fib_iter gen 7 7 6 1,034 0.007
loops gen 3 3 2 352 0.007
asdl_generated gen 9 6 8 525 0.017
scoped_resource gen 26 30 29 1,393 0.019
parse gen 21 27 23 928 0.023
tuple_return_value gen 13 15 14 248 0.053
classes gen 2 2 2 34 0.054
containers gen 7 5 4 124 0.056
files gen 7 5 6 97 0.069
length gen 34 33 39 237 0.142
cartesian gen 71 76 70 392 0.180
escape gen 93 102 88 472 0.198
cgi gen 258 245 259 731 0.352
varargs gen 17 17 13 34 0.495
control_flow gen 134 177 135 144 0.925

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.5 4.3 11.5 0.39
asdl_generated gen 3.4 3.3 3.4 7.6 0.45
fib_recursive gen 3.4 3.4 3.7 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
cartesian gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.4 3.4 7.7 0.46
escape gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.5 3.7 7.6 0.47
length gen 3.7 3.5 3.5 7.7 0.47
modules gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.48
fib_iter gen 3.7 3.7 3.5 7.6 0.48
files gen 3.7 3.5 3.7 7.6 0.48
scoped_resource gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.8 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.3 28.5 28.4 48.2 0.59
varargs gen 5.5 5.5 5.4 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 0 0 1 8 0.000
fib_recursive gen 0 0 1 5 0.000
files gen 0 2 1 8 0.000
loops gen 0 0 1 8 0.000
modules gen 0 0 1 8 0.000
classes gen 1 1 1 9 0.101
gc_stack_roots gen 1 1 0 10 0.151
asdl_generated gen 1 4 2 4 0.249
tuple_return_value gen 2 1 1 8 0.251
containers gen 7 9 10 27 0.259
parse gen 4 0 2 10 0.390
scoped_resource gen 4 1 1 10 0.400
control_flow gen 3 3 0 7 0.429
escape gen 3 2 10 6 0.497
cgi gen 3 7 2 6 0.501
length gen 5 4 0 7 0.708
cartesian gen 4 4 6 5 0.808
varargs gen 22 21 26 23 0.947

raw benchmark files