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 232 0.000
fib_recursive gen 5 5 5 1,116 0.005
fib_iter gen 6 6 6 965 0.006
loops gen 3 2 2 374 0.007
asdl_generated gen 5 6 8 497 0.010
scoped_resource gen 27 28 25 1,360 0.020
parse gen 24 24 20 956 0.025
classes gen 1 1 3 29 0.031
tuple_return_value gen 11 17 11 245 0.047
files gen 6 6 6 102 0.056
containers gen 8 5 6 129 0.059
gc_stack_roots gen 1 0 1 14 0.100
length gen 37 31 35 240 0.153
cartesian gen 65 76 67 391 0.167
escape gen 95 100 94 433 0.219
cgi gen 262 249 257 723 0.362
varargs gen 17 16 9 29 0.592
control_flow gen 136 179 132 153 0.886

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.2 4.5 11.4 0.39
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
length gen 3.4 3.5 3.5 7.6 0.45
cgi gen 3.5 3.4 3.5 7.7 0.46
fib_iter gen 3.5 3.7 3.7 7.7 0.46
scoped_resource gen 3.5 3.5 3.7 7.7 0.46
asdl_generated gen 3.5 3.3 3.4 7.6 0.47
cartesian gen 3.5 3.5 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.5 7.6 0.47
parse gen 3.8 3.9 3.8 8.1 0.47
files gen 3.7 3.8 3.8 7.7 0.47
control_flow gen 3.7 3.8 3.8 7.6 0.48
fib_recursive gen 3.7 3.5 3.5 7.6 0.48
modules gen 3.7 3.7 3.7 7.6 0.48
tuple_return_value gen 3.8 3.8 3.5 7.6 0.50
containers gen 28.5 28.5 28.4 48.2 0.59
varargs gen 5.5 5.4 5.5 7.5 0.74

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 1 3 4 0.000
gc_stack_roots gen 0 1 0 7 0.000
loops gen 0 1 1 8 0.000
parse gen 1 3 5 10 0.100
cgi gen 1 3 4 8 0.125
classes gen 2 1 0 14 0.129
fib_recursive gen 1 1 1 7 0.149
modules gen 1 1 1 9 0.159
files gen 1 1 1 5 0.191
fib_iter gen 1 1 1 5 0.200
length gen 2 6 4 8 0.248
containers gen 6 9 8 20 0.287
tuple_return_value gen 4 0 4 9 0.423
scoped_resource gen 3 3 5 7 0.425
escape gen 3 5 3 6 0.500
asdl_generated gen 5 4 2 8 0.622
varargs gen 21 22 29 28 0.757
cartesian gen 9 4 8 8 1.112

raw benchmark files