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 0 1 230 0.000
fib_recursive gen 6 5 4 1,089 0.006
fib_iter gen 6 7 7 949 0.006
loops gen 3 2 1 365 0.007
scoped_resource gen 23 30 30 1,384 0.017
asdl_generated gen 9 10 8 523 0.017
parse gen 24 24 20 962 0.025
classes gen 1 3 3 32 0.028
files gen 5 6 4 100 0.049
tuple_return_value gen 14 15 12 245 0.058
containers gen 7 8 6 121 0.061
gc_stack_roots gen 1 1 0 15 0.094
length gen 34 35 36 246 0.137
cartesian gen 67 72 74 398 0.169
escape gen 95 97 97 435 0.219
cgi gen 259 244 258 739 0.350
varargs gen 13 17 16 28 0.464
control_flow gen 135 177 135 142 0.950

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.3 7.6 0.45
cartesian gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.4 3.3 7.6 0.45
length gen 3.5 3.7 3.7 7.7 0.46
loops gen 3.5 3.5 3.5 7.7 0.46
cgi gen 3.5 3.4 3.4 7.6 0.47
fib_recursive gen 3.5 3.4 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.5 3.7 7.6 0.47
parse gen 3.8 3.7 3.8 8.1 0.47
tuple_return_value gen 3.7 3.8 3.7 7.7 0.47
escape gen 3.7 3.5 3.4 7.6 0.48
fib_iter gen 3.7 3.5 3.5 7.6 0.48
control_flow gen 3.8 3.8 3.8 7.6 0.50
files gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.4 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 10 0.000
gc_stack_roots gen 0 0 1 5 0.000
loops gen 0 2 2 6 0.000
control_flow gen 1 2 0 9 0.112
tuple_return_value gen 1 2 3 9 0.113
modules gen 1 1 0 12 0.121
parse gen 1 3 5 8 0.127
asdl_generated gen 1 0 2 7 0.142
classes gen 2 0 0 13 0.144
fib_iter gen 1 0 0 7 0.144
containers gen 6 7 9 33 0.192
files gen 2 1 3 8 0.244
cgi gen 3 2 3 7 0.428
escape gen 3 9 2 5 0.601
scoped_resource gen 6 2 2 9 0.680
length gen 5 2 3 6 0.824
varargs gen 25 21 22 29 0.862
cartesian gen 7 8 1 8 0.879

raw benchmark files