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
modules gen 0 0 0 233 0.000
fib_recursive gen 5 6 5 1,103 0.004
loops gen 2 2 1 353 0.005
fib_iter gen 5 7 6 967 0.006
asdl_generated gen 7 7 7 508 0.014
containers gen 2 8 5 135 0.015
scoped_resource gen 28 30 27 1,358 0.021
parse gen 25 22 22 947 0.026
tuple_return_value gen 13 17 10 246 0.052
classes gen 2 3 1 32 0.059
files gen 7 7 5 100 0.070
gc_stack_roots gen 1 1 1 13 0.110
length gen 34 33 34 246 0.138
cartesian gen 64 74 68 416 0.154
escape gen 94 103 95 424 0.221
cgi gen 258 238 261 730 0.354
varargs gen 20 17 13 25 0.816
control_flow gen 135 181 135 147 0.914

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
files gen 0 0 2 8 0.000
gc_stack_roots gen 0 0 0 8 0.000
classes gen 1 0 2 14 0.067
loops gen 1 1 2 12 0.072
control_flow gen 1 1 1 9 0.111
parse gen 1 5 4 8 0.123
modules gen 2 2 1 9 0.167
fib_iter gen 2 0 1 9 0.201
scoped_resource gen 2 2 3 9 0.222
tuple_return_value gen 2 0 5 8 0.247
asdl_generated gen 3 3 3 12 0.260
cgi gen 3 6 2 10 0.300
fib_recursive gen 2 0 2 5 0.363
varargs gen 18 22 26 32 0.574
escape gen 6 3 4 10 0.604
containers gen 12 7 9 20 0.617
length gen 5 3 4 8 0.624
cartesian gen 9 6 7 8 1.126

raw benchmark files