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
fib_recursive gen 6 6 6 1,107 0.005
modules gen 1 1 1 232 0.006
fib_iter gen 6 8 7 967 0.006
loops gen 3 3 3 358 0.007
scoped_resource gen 29 29 28 1,364 0.021
asdl_generated gen 12 10 9 520 0.023
parse gen 26 24 23 949 0.027
classes gen 1 1 2 33 0.029
containers gen 5 5 5 119 0.042
gc_stack_roots gen 1 0 1 13 0.057
tuple_return_value gen 15 16 10 247 0.060
files gen 7 6 5 101 0.071
length gen 37 34 33 246 0.151
cartesian gen 68 74 76 441 0.154
escape gen 96 105 93 434 0.221
cgi gen 259 250 260 733 0.353
varargs gen 26 22 15 29 0.911
control_flow gen 135 180 136 148 0.913

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
asdl_generated gen 0 1 2 7 0.000
files gen 0 2 2 6 0.000
loops gen 0 1 0 9 0.000
modules gen 0 1 1 9 0.000
gc_stack_roots gen 1 1 0 9 0.082
tuple_return_value gen 1 1 6 9 0.111
control_flow gen 1 0 0 8 0.124
parse gen 1 4 3 7 0.143
fib_recursive gen 1 1 0 6 0.155
fib_iter gen 1 0 1 6 0.173
classes gen 2 2 1 10 0.195
scoped_resource gen 2 3 2 9 0.223
containers gen 9 9 9 35 0.256
cgi gen 4 3 3 9 0.444
length gen 2 3 5 4 0.503
varargs gen 14 17 25 28 0.508
cartesian gen 8 7 4 7 1.139
escape gen 7 3 8 6 1.167

raw benchmark files