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 1 1 12 0.000
fib_recursive gen 4 5 5 1,078 0.004
loops gen 2 3 2 361 0.005
modules gen 1 0 0 234 0.006
fib_iter gen 6 7 6 966 0.006
asdl_generated gen 9 8 8 518 0.017
scoped_resource gen 29 28 28 1,343 0.022
parse gen 22 24 21 952 0.024
containers gen 5 7 5 121 0.042
tuple_return_value gen 13 16 13 243 0.054
classes gen 2 1 2 30 0.058
files gen 6 3 6 99 0.059
length gen 36 31 35 244 0.148
cartesian gen 66 75 74 387 0.171
escape gen 90 100 95 437 0.205
cgi gen 255 250 256 731 0.349
varargs gen 15 22 21 24 0.617
control_flow gen 138 178 132 149 0.925

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.3 11.4 0.37
asdl_generated gen 3.4 3.4 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.3 3.5 7.7 0.44
escape gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.5 3.4 3.5 7.7 0.46
fib_recursive gen 3.5 3.5 3.5 7.7 0.46
scoped_resource gen 3.5 3.5 3.4 7.7 0.46
cgi gen 3.5 3.5 3.4 7.6 0.47
loops gen 3.5 3.4 3.7 7.6 0.47
modules gen 3.5 3.7 3.5 7.6 0.47
control_flow gen 3.7 3.8 3.8 7.7 0.47
length gen 3.7 3.5 3.5 7.7 0.47
fib_iter gen 3.7 3.7 3.5 7.6 0.48
parse gen 3.9 3.9 3.8 8.1 0.48
files gen 3.7 3.8 3.7 7.5 0.49
tuple_return_value gen 3.8 3.7 3.5 7.6 0.50
containers gen 28.3 28.5 28.5 48.2 0.59
varargs gen 5.5 5.5 5.5 7.7 0.71

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
modules gen 0 1 1 6 0.000
classes gen 1 2 1 12 0.075
control_flow gen 1 0 3 9 0.112
scoped_resource gen 1 4 2 8 0.126
files gen 1 3 1 7 0.138
asdl_generated gen 1 2 2 7 0.142
gc_stack_roots gen 1 0 0 9 0.156
loops gen 1 0 0 5 0.168
fib_iter gen 1 0 1 6 0.170
tuple_return_value gen 2 1 2 10 0.200
parse gen 3 3 5 12 0.255
containers gen 8 7 8 30 0.273
length gen 2 5 4 7 0.287
fib_recursive gen 2 1 1 6 0.296
cgi gen 5 3 4 8 0.626
varargs gen 24 16 17 32 0.741
escape gen 7 6 3 6 1.163
cartesian gen 9 5 1 5 1.799

raw benchmark files