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 0 0 10 0.000
loops gen 1 2 1 360 0.002
fib_recursive gen 6 5 4 1,098 0.006
modules gen 1 1 1 232 0.006
fib_iter gen 6 6 6 986 0.006
asdl_generated gen 9 10 7 513 0.017
scoped_resource gen 26 28 28 1,396 0.019
containers gen 3 4 3 130 0.022
parse gen 22 25 21 963 0.023
tuple_return_value gen 14 15 14 250 0.056
files gen 7 5 6 96 0.071
classes gen 3 2 2 36 0.075
length gen 36 31 37 245 0.148
cartesian gen 68 71 70 396 0.172
escape gen 88 102 89 435 0.202
cgi gen 255 251 255 737 0.346
varargs gen 16 13 19 24 0.662
control_flow gen 133 179 134 147 0.906

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.3 4.5 11.5 0.39
cartesian gen 3.4 3.4 3.4 7.7 0.44
modules gen 3.4 3.7 3.5 7.7 0.44
asdl_generated 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
parse gen 3.7 3.8 3.8 8.1 0.45
cgi gen 3.5 3.4 3.5 7.7 0.46
escape gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.5 7.7 0.46
loops gen 3.5 3.7 3.7 7.6 0.47
fib_recursive gen 3.7 3.7 3.5 7.7 0.47
length gen 3.7 3.5 3.4 7.7 0.47
fib_iter gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.7 0.49
files gen 3.8 3.7 3.8 7.6 0.50
tuple_return_value gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.6 28.5 48.2 0.59
varargs gen 5.5 5.6 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 6 0.000
fib_recursive gen 0 1 2 6 0.000
files gen 0 2 1 10 0.000
modules gen 0 1 1 9 0.000
asdl_generated gen 1 0 3 8 0.124
tuple_return_value gen 1 1 1 8 0.125
gc_stack_roots gen 1 1 1 10 0.132
fib_iter gen 1 1 1 6 0.168
loops gen 2 1 2 8 0.212
control_flow gen 2 2 2 9 0.223
parse gen 3 2 5 9 0.334
length gen 2 6 2 5 0.402
containers gen 11 10 11 23 0.464
scoped_resource gen 4 5 2 7 0.572
cgi gen 5 2 3 8 0.623
varargs gen 23 26 20 33 0.693
escape gen 9 4 8 8 1.125
cartesian gen 7 9 5 3 2.333

raw benchmark files