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 2 15 0.000
loops gen 1 3 1 364 0.003
fib_recursive gen 5 6 6 1,103 0.005
modules gen 1 0 1 241 0.006
fib_iter gen 6 7 7 974 0.006
asdl_generated gen 7 7 9 512 0.014
scoped_resource gen 28 29 26 1,424 0.020
parse gen 24 24 23 952 0.025
classes gen 1 1 2 34 0.027
containers gen 4 12 3 128 0.032
tuple_return_value gen 13 16 13 248 0.051
files gen 6 5 7 98 0.060
length gen 35 31 33 250 0.142
cartesian gen 68 78 69 397 0.172
escape gen 90 100 92 425 0.212
cgi gen 260 253 256 720 0.361
varargs gen 15 19 17 24 0.622
control_flow gen 135 175 138 145 0.933

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
cgi gen 0 2 4 7 0.000
control_flow gen 0 4 1 8 0.000
modules gen 0 1 0 5 0.000
files gen 1 2 0 10 0.098
fib_recursive gen 1 0 0 10 0.105
fib_iter gen 1 0 0 7 0.144
parse gen 2 3 3 12 0.164
classes gen 2 2 1 9 0.200
scoped_resource gen 2 3 4 9 0.218
gc_stack_roots gen 1 0 0 6 0.232
tuple_return_value gen 2 1 2 8 0.266
asdl_generated gen 3 3 1 10 0.299
loops gen 1 0 1 4 0.317
length gen 3 6 6 8 0.368
containers gen 10 7 11 26 0.390
cartesian gen 7 4 4 12 0.584
escape gen 7 5 5 11 0.638
varargs gen 24 20 22 33 0.724

raw benchmark files