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
classes gen 0 2 3 32 0.000
modules gen 1 0 0 228 0.003
loops gen 2 2 2 362 0.005
fib_recursive gen 5 6 4 1,078 0.005
fib_iter gen 5 7 6 960 0.005
asdl_generated gen 4 9 9 526 0.008
scoped_resource gen 27 26 26 1,443 0.019
parse gen 24 25 26 956 0.025
containers gen 6 3 5 129 0.048
tuple_return_value gen 13 15 14 248 0.051
files gen 6 7 7 99 0.057
gc_stack_roots gen 1 0 0 10 0.070
length gen 34 31 31 243 0.139
cartesian gen 69 71 66 393 0.175
escape gen 92 103 94 431 0.213
cgi gen 254 247 256 746 0.340
varargs gen 16 15 18 34 0.480
control_flow gen 136 174 138 144 0.944

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
modules gen 1 1 1 12 0.061
gc_stack_roots gen 1 1 1 10 0.070
files gen 1 0 0 8 0.140
loops gen 1 2 0 6 0.142
fib_recursive gen 1 0 2 6 0.172
control_flow gen 2 5 0 9 0.220
parse gen 2 2 1 8 0.245
classes gen 3 1 0 10 0.265
fib_iter gen 2 0 1 6 0.334
containers gen 7 11 9 21 0.346
tuple_return_value gen 2 1 1 4 0.487
length gen 5 6 7 8 0.623
scoped_resource gen 4 5 4 6 0.663
asdl_generated gen 6 1 1 9 0.670
escape gen 5 1 4 7 0.714
cartesian gen 6 7 7 8 0.747
cgi gen 7 3 4 8 0.877
varargs gen 22 23 21 22 1.019

raw benchmark files