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 1 12 0.000
modules gen 0 0 0 238 0.000
loops gen 2 3 1 357 0.005
fib_iter gen 5 6 7 946 0.006
fib_recursive gen 6 5 6 1,095 0.006
asdl_generated gen 9 7 8 502 0.018
scoped_resource gen 26 29 30 1,369 0.019
parse gen 20 23 24 963 0.021
containers gen 5 6 5 123 0.041
files gen 6 5 5 102 0.055
tuple_return_value gen 14 11 15 245 0.057
classes gen 3 1 2 33 0.085
length gen 32 33 32 243 0.131
cartesian gen 73 67 71 386 0.190
escape gen 94 105 96 419 0.225
cgi gen 258 239 257 735 0.351
varargs gen 12 20 18 25 0.485
control_flow gen 133 181 136 145 0.921

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.2 4.5 4.5 11.5 0.37
asdl_generated gen 3.4 3.3 3.4 7.7 0.44
cartesian gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
cgi gen 3.5 3.4 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
escape gen 3.5 3.5 3.4 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
parse gen 3.8 3.7 3.8 8.1 0.47
fib_iter gen 3.7 3.5 3.7 7.7 0.47
loops gen 3.7 3.5 3.4 7.7 0.47
files gen 3.7 3.8 3.7 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.5 3.8 7.6 0.50
tuple_return_value gen 3.8 3.8 3.8 7.6 0.50
containers gen 28.5 28.7 28.4 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
classes gen 0 1 1 10 0.000
fib_recursive gen 0 1 0 9 0.000
loops gen 1 0 2 11 0.078
tuple_return_value gen 1 6 0 8 0.125
asdl_generated gen 1 3 2 7 0.142
modules gen 1 1 1 9 0.161
gc_stack_roots gen 1 1 0 8 0.173
files gen 1 2 2 6 0.186
fib_iter gen 2 1 0 8 0.220
cartesian gen 2 11 4 9 0.223
control_flow gen 2 1 1 8 0.249
containers gen 9 9 9 30 0.303
cgi gen 3 6 2 9 0.333
escape gen 3 1 3 9 0.335
parse gen 5 4 2 8 0.634
varargs gen 26 18 21 31 0.848
scoped_resource gen 4 3 0 4 0.995
length gen 7 4 7 5 1.392

raw benchmark files