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 1 365 0.005
fib_recursive gen 6 5 4 1,149 0.005
modules gen 1 1 0 249 0.006
fib_iter gen 6 6 5 966 0.006
asdl_generated gen 6 8 9 558 0.011
scoped_resource gen 27 29 29 1,365 0.020
parse gen 23 22 22 940 0.024
classes gen 1 2 1 31 0.030
containers gen 5 4 7 131 0.040
tuple_return_value gen 11 14 14 253 0.043
files gen 7 4 6 100 0.066
gc_stack_roots gen 1 0 1 11 0.122
length gen 33 33 36 238 0.137
cartesian gen 70 76 71 387 0.181
escape gen 92 99 91 440 0.209
cgi gen 258 247 259 745 0.347
varargs gen 15 15 17 31 0.486
control_flow gen 140 179 133 148 0.942

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.5 0.39
asdl_generated gen 3.3 3.4 3.3 7.7 0.42
cartesian gen 3.4 3.4 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
scoped_resource gen 3.4 3.5 3.5 7.6 0.45
cgi gen 3.5 3.4 3.4 7.7 0.46
files gen 3.5 3.8 3.8 7.7 0.46
loops gen 3.5 3.5 3.7 7.7 0.46
modules gen 3.5 3.4 3.7 7.7 0.46
escape gen 3.5 3.5 3.7 7.6 0.47
fib_recursive gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.4 3.7 7.6 0.47
parse gen 3.8 3.9 3.7 8.0 0.47
fib_iter gen 3.7 3.5 3.7 7.6 0.48
tuple_return_value gen 3.7 3.7 3.7 7.6 0.48
control_flow gen 3.8 3.7 3.8 7.6 0.50
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 2 4 0.000
files gen 0 3 1 7 0.000
gc_stack_roots gen 0 1 1 9 0.000
modules gen 0 0 1 8 0.000
fib_iter gen 1 1 2 9 0.112
loops gen 1 0 2 6 0.141
classes gen 2 1 2 13 0.142
parse gen 3 5 4 15 0.197
control_flow gen 1 2 3 5 0.199
cgi gen 3 4 1 9 0.334
scoped_resource gen 3 2 1 8 0.378
containers gen 8 11 7 20 0.423
tuple_return_value gen 4 3 1 8 0.497
asdl_generated gen 4 2 1 8 0.497
cartesian gen 5 4 4 10 0.501
length gen 6 4 2 8 0.762
varargs gen 23 24 21 25 0.923
escape gen 8 5 8 7 1.138

raw benchmark files