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 235 0.000
fib_recursive gen 5 4 5 1,085 0.005
fib_iter gen 6 6 7 953 0.006
loops gen 3 2 1 367 0.007
asdl_generated gen 9 9 6 512 0.018
scoped_resource gen 29 27 27 1,357 0.021
parse gen 21 24 22 957 0.022
classes gen 1 1 2 37 0.037
containers gen 5 4 7 124 0.040
files gen 5 5 5 105 0.047
gc_stack_roots gen 1 1 0 15 0.049
tuple_return_value gen 14 12 13 244 0.058
length gen 36 31 33 240 0.150
cartesian gen 66 75 67 390 0.170
escape gen 95 98 92 424 0.223
cgi gen 251 248 257 757 0.331
varargs gen 13 16 16 31 0.416
control_flow gen 136 178 137 146 0.930

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.5 11.5 0.38
asdl_generated gen 3.4 3.4 3.5 7.7 0.44
cartesian gen 3.4 3.4 3.4 7.7 0.44
cgi gen 3.4 3.4 3.4 7.7 0.44
escape 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
parse gen 3.7 3.7 3.8 8.1 0.45
fib_recursive gen 3.5 3.7 3.5 7.7 0.46
length gen 3.5 3.5 3.7 7.7 0.46
modules 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.5 3.8 3.8 7.6 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
loops gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.7 3.5 7.7 0.49
containers gen 28.5 28.7 28.5 48.1 0.59
varargs gen 5.5 5.5 5.6 7.6 0.72

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
control_flow gen 0 3 1 7 0.000
loops gen 0 1 2 8 0.000
asdl_generated gen 1 1 4 9 0.112
tuple_return_value gen 1 5 2 9 0.112
fib_iter gen 1 1 0 9 0.114
gc_stack_roots gen 1 1 1 6 0.122
fib_recursive gen 1 2 1 8 0.129
scoped_resource gen 1 4 3 7 0.142
classes gen 1 2 1 7 0.198
length gen 3 6 5 11 0.272
modules gen 1 0 0 5 0.294
containers gen 9 11 7 30 0.302
files gen 2 2 2 6 0.327
cgi gen 2 4 4 6 0.333
escape gen 4 6 5 9 0.448
parse gen 4 3 3 6 0.677
varargs gen 26 23 23 25 1.032
cartesian gen 9 5 8 8 1.112

raw benchmark files