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 0 13 0.000
modules gen 0 1 0 230 0.000
loops gen 1 2 2 355 0.002
fib_recursive gen 5 5 4 1,092 0.005
fib_iter gen 5 6 6 954 0.005
asdl_generated gen 9 9 9 517 0.017
scoped_resource gen 28 25 23 1,367 0.021
parse gen 22 24 25 961 0.023
classes gen 1 1 2 34 0.039
tuple_return_value gen 12 15 13 246 0.048
files gen 6 7 7 98 0.059
containers gen 9 4 5 136 0.069
length gen 36 34 37 239 0.151
cartesian gen 67 90 71 395 0.169
escape gen 93 101 92 428 0.216
cgi gen 260 250 259 739 0.352
varargs gen 14 14 17 29 0.491
control_flow gen 132 177 136 147 0.896

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.3 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.3 7.6 0.45
loops gen 3.4 3.7 3.5 7.6 0.45
cgi gen 3.5 3.5 3.4 7.7 0.46
escape gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.7 3.7 7.7 0.46
length gen 3.5 3.5 3.7 7.7 0.46
modules gen 3.5 3.7 3.7 7.7 0.46
cartesian gen 3.5 3.5 3.4 7.6 0.47
parse gen 3.8 3.8 3.8 8.1 0.47
fib_iter gen 3.7 3.5 3.7 7.6 0.48
files gen 3.7 3.7 3.5 7.6 0.48
scoped_resource gen 3.7 3.7 3.5 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
containers gen 28.5 28.5 28.3 48.2 0.59
varargs gen 5.6 5.5 5.5 7.7 0.73

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
files gen 1 0 0 10 0.096
asdl_generated gen 1 1 1 9 0.111
fib_recursive gen 1 1 2 9 0.116
modules gen 1 0 1 11 0.130
classes gen 1 2 1 10 0.132
containers gen 4 10 9 23 0.179
gc_stack_roots gen 1 0 1 7 0.185
loops gen 2 2 1 9 0.187
scoped_resource gen 2 7 7 10 0.202
parse gen 3 3 1 13 0.225
length gen 3 2 2 13 0.231
fib_iter gen 2 1 1 8 0.253
tuple_return_value gen 3 1 2 11 0.268
cgi gen 2 3 2 5 0.399
escape gen 6 6 7 9 0.662
control_flow gen 4 5 0 5 0.798
varargs gen 24 25 22 29 0.841
cartesian gen 7 8 4 6 1.162

raw benchmark files