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
loops gen 2 3 3 354 0.005
fib_recursive gen 6 6 6 1,112 0.006
modules gen 1 0 1 237 0.006
fib_iter gen 6 7 7 965 0.006
asdl_generated gen 9 7 8 512 0.017
scoped_resource gen 27 31 28 1,363 0.020
parse gen 23 24 21 945 0.024
containers gen 4 6 8 123 0.034
classes gen 1 1 2 31 0.044
tuple_return_value gen 13 16 13 248 0.052
files gen 6 5 6 102 0.055
gc_stack_roots gen 1 1 0 13 0.105
length gen 38 32 32 244 0.154
cartesian gen 67 76 68 386 0.173
escape gen 96 97 91 423 0.228
cgi gen 257 249 256 723 0.356
varargs gen 21 11 16 30 0.697
control_flow gen 134 182 133 143 0.941

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.3 4.2 11.4 0.39
gc_stack_roots gen 3.4 3.4 3.5 7.7 0.44
parse gen 3.7 3.8 3.7 8.3 0.44
cgi gen 3.4 3.5 3.4 7.6 0.45
escape gen 3.4 3.7 3.5 7.6 0.45
fib_recursive gen 3.5 3.7 3.5 7.7 0.46
loops 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.4 3.4 7.6 0.47
tuple_return_value gen 3.5 3.8 3.7 7.6 0.47
files gen 3.7 3.8 3.8 7.7 0.47
length gen 3.7 3.5 3.7 7.7 0.47
cartesian gen 3.5 3.4 3.4 7.3 0.48
fib_iter gen 3.7 3.5 3.5 7.6 0.48
modules gen 3.7 3.7 3.4 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.4 28.5 28.5 48.2 0.59
varargs gen 5.4 5.4 5.5 7.7 0.69

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 0 0 7 0.000
gc_stack_roots gen 0 0 1 7 0.000
modules gen 0 1 1 9 0.000
control_flow gen 1 1 2 9 0.112
classes gen 1 2 1 12 0.112
asdl_generated gen 1 3 2 8 0.124
loops gen 1 0 0 6 0.140
length gen 1 5 7 6 0.169
files gen 1 2 1 6 0.186
fib_iter gen 1 0 0 4 0.251
cgi gen 3 3 3 11 0.272
escape gen 3 8 6 11 0.274
tuple_return_value gen 2 1 2 6 0.332
containers gen 9 9 6 28 0.333
parse gen 3 3 5 8 0.368
scoped_resource gen 3 1 2 6 0.504
varargs gen 17 27 22 25 0.677
cartesian gen 8 6 7 8 1.011

raw benchmark files