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 245 0.000
fib_recursive gen 4 4 6 1,152 0.004
fib_iter gen 6 6 7 967 0.006
loops gen 3 2 1 364 0.007
asdl_generated gen 8 9 9 532 0.015
scoped_resource gen 28 31 27 1,358 0.021
parse gen 24 22 22 950 0.026
classes gen 1 1 0 31 0.043
containers gen 6 4 7 126 0.047
tuple_return_value gen 13 13 13 247 0.052
files gen 6 5 5 100 0.058
gc_stack_roots gen 1 1 0 14 0.101
length gen 37 35 35 248 0.147
cartesian gen 66 74 72 400 0.164
escape gen 96 104 94 436 0.221
cgi gen 257 249 259 758 0.338
varargs gen 23 18 19 34 0.660
control_flow gen 134 174 133 150 0.895

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.3 11.4 0.39
asdl_generated gen 3.4 3.3 3.3 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.4 7.7 0.44
cgi gen 3.5 3.5 3.5 7.7 0.46
cartesian gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.4 3.5 7.6 0.47
fib_iter gen 3.7 3.5 3.5 7.7 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
modules gen 3.7 3.5 3.5 7.7 0.47
parse gen 3.8 3.8 3.8 8.0 0.48
control_flow gen 3.7 3.8 3.8 7.6 0.48
loops gen 3.7 3.5 3.5 7.6 0.48
tuple_return_value gen 3.8 3.7 3.5 7.7 0.49
containers gen 28.5 28.7 28.5 48.4 0.59
varargs gen 5.5 5.5 5.4 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
gc_stack_roots gen 0 1 1 7 0.000
loops gen 0 1 1 6 0.000
classes gen 1 2 3 14 0.095
parse gen 1 4 4 10 0.101
files gen 1 2 2 7 0.139
fib_iter gen 1 1 0 5 0.201
escape gen 2 2 4 9 0.223
asdl_generated gen 2 1 1 8 0.249
tuple_return_value gen 2 3 2 7 0.283
length gen 2 1 3 7 0.289
scoped_resource gen 2 1 3 7 0.289
fib_recursive gen 2 2 0 6 0.298
cgi gen 3 3 1 10 0.299
containers gen 8 11 7 25 0.314
modules gen 1 1 1 4 0.347
control_flow gen 3 5 2 6 0.497
varargs gen 16 21 19 22 0.709
cartesian gen 9 6 3 7 1.279

raw benchmark files