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 2 362 0.005
fib_iter gen 5 4 5 946 0.006
fib_recursive gen 6 5 6 1,091 0.006
modules gen 1 0 1 236 0.006
asdl_generated gen 8 6 9 511 0.016
scoped_resource gen 28 27 25 1,361 0.021
parse gen 25 24 24 956 0.026
files gen 4 5 5 107 0.037
containers gen 5 7 5 127 0.040
tuple_return_value gen 13 15 13 247 0.054
classes gen 2 2 3 31 0.060
gc_stack_roots gen 1 1 0 14 0.103
length gen 39 33 36 241 0.162
cartesian gen 65 72 71 395 0.166
escape gen 96 100 99 426 0.225
cgi gen 257 250 257 745 0.345
varargs gen 13 16 17 31 0.408
control_flow gen 135 178 134 148 0.909

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
gc_stack_roots gen 3.3 3.3 3.4 7.6 0.43
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
cartesian gen 3.4 3.5 3.5 7.6 0.45
scoped_resource gen 3.4 3.5 3.4 7.6 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
length gen 3.5 3.5 3.4 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
fib_iter gen 3.5 3.5 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.7 7.7 0.47
parse gen 3.8 3.9 3.8 8.0 0.47
fib_recursive gen 3.7 3.5 3.7 7.6 0.48
files gen 3.7 3.7 3.8 7.6 0.48
loops gen 3.7 3.7 3.7 7.6 0.48
modules gen 3.7 3.7 3.5 7.6 0.48
tuple_return_value gen 3.8 3.7 3.7 7.7 0.49
containers gen 28.4 28.7 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 0 11 0.000
gc_stack_roots gen 0 1 2 7 0.000
modules gen 0 2 0 8 0.000
classes gen 1 1 0 14 0.066
loops gen 1 0 1 9 0.099
parse gen 1 4 2 7 0.142
fib_iter gen 2 3 2 10 0.179
tuple_return_value gen 2 2 2 9 0.228
scoped_resource gen 2 4 5 7 0.281
files gen 3 2 2 10 0.295
asdl_generated gen 2 4 1 7 0.299
length gen 3 4 3 10 0.301
cgi gen 3 4 3 9 0.333
containers gen 9 7 9 27 0.339
control_flow gen 3 2 2 8 0.376
escape gen 3 6 0 7 0.428
varargs gen 29 23 22 27 1.044
cartesian gen 10 8 8 7 1.415

raw benchmark files