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 1 1 231 0.000
loops gen 2 3 2 365 0.005
fib_recursive gen 6 5 5 1,121 0.006
fib_iter gen 6 5 7 958 0.006
asdl_generated gen 8 7 8 522 0.015
scoped_resource gen 26 25 25 1,380 0.019
parse gen 25 24 25 965 0.026
classes gen 1 1 1 33 0.027
containers gen 4 9 6 130 0.030
tuple_return_value gen 13 13 13 247 0.053
files gen 7 7 6 101 0.067
gc_stack_roots gen 1 1 0 11 0.120
length gen 37 34 34 249 0.147
cartesian gen 69 72 69 394 0.175
escape gen 89 98 93 425 0.209
cgi gen 256 248 258 730 0.351
varargs gen 20 19 10 29 0.703
control_flow gen 134 176 135 146 0.916

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.3 4.3 11.6 0.37
gc_stack_roots gen 3.3 3.3 3.4 7.6 0.43
cartesian gen 3.4 3.5 3.5 7.7 0.44
asdl_generated gen 3.4 3.5 3.4 7.6 0.45
parse gen 3.7 3.9 3.8 8.1 0.45
cgi gen 3.5 3.4 3.4 7.6 0.47
escape gen 3.5 3.5 3.4 7.6 0.47
fib_iter gen 3.5 3.7 3.5 7.6 0.47
length gen 3.5 3.7 3.7 7.6 0.47
scoped_resource gen 3.5 3.5 3.5 7.6 0.47
tuple_return_value gen 3.7 3.5 3.8 7.7 0.47
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
loops gen 3.7 3.7 3.5 7.6 0.48
modules gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.7 3.7 7.5 0.51
containers gen 28.5 28.5 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_recursive gen 0 1 1 8 0.000
files gen 0 0 1 6 0.000
gc_stack_roots gen 0 0 1 9 0.000
parse gen 0 3 1 11 0.000
loops gen 1 0 1 7 0.123
fib_iter gen 1 2 0 7 0.144
modules gen 1 0 0 8 0.179
classes gen 2 2 2 10 0.181
control_flow gen 1 3 0 5 0.200
asdl_generated gen 2 3 2 9 0.220
tuple_return_value gen 2 3 2 6 0.334
cgi gen 4 2 2 9 0.445
containers gen 10 6 7 20 0.493
scoped_resource gen 4 6 5 7 0.558
varargs gen 18 19 28 30 0.612
length gen 2 2 5 3 0.677
cartesian gen 6 8 6 7 0.857
escape gen 8 7 5 4 1.995

raw benchmark files