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 0 12 0.000
modules gen 0 1 1 233 0.000
loops gen 2 3 3 355 0.005
fib_recursive gen 5 5 5 1,089 0.005
fib_iter gen 6 6 7 966 0.006
asdl_generated gen 8 9 8 503 0.016
scoped_resource gen 25 32 28 1,355 0.018
parse gen 23 26 24 948 0.025
classes gen 1 1 2 31 0.042
files gen 5 5 6 100 0.050
tuple_return_value gen 13 16 12 251 0.052
containers gen 7 3 7 125 0.059
length gen 37 33 31 246 0.149
cartesian gen 70 71 63 398 0.176
escape gen 95 95 93 425 0.224
cgi gen 259 250 254 746 0.347
varargs gen 17 18 13 27 0.636
control_flow gen 132 179 132 149 0.888

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.5 4.5 11.5 0.38
asdl_generated gen 3.4 3.3 3.3 7.6 0.45
gc_stack_roots gen 3.4 3.3 3.4 7.6 0.45
fib_iter gen 3.5 3.7 3.5 7.7 0.46
length gen 3.5 3.4 3.5 7.7 0.46
cartesian gen 3.5 3.5 3.5 7.6 0.47
cgi gen 3.5 3.4 3.5 7.6 0.47
escape gen 3.5 3.5 3.5 7.6 0.47
modules gen 3.5 3.5 3.5 7.6 0.47
scoped_resource gen 3.5 3.4 3.5 7.6 0.47
files gen 3.7 3.8 3.8 7.7 0.47
loops gen 3.7 3.8 3.5 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
fib_recursive gen 3.7 3.7 3.5 7.6 0.48
control_flow gen 3.7 3.8 3.8 7.5 0.49
parse gen 3.9 3.8 3.8 8.0 0.49
containers gen 28.5 28.4 28.4 48.2 0.59
varargs gen 5.2 5.5 5.5 7.6 0.69

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
fib_iter gen 1 1 0 11 0.091
fib_recursive gen 1 1 1 11 0.093
loops gen 1 0 0 8 0.104
classes gen 1 2 1 11 0.120
cgi gen 1 1 5 7 0.143
gc_stack_roots gen 1 0 1 8 0.168
parse gen 2 1 1 9 0.226
modules gen 1 1 0 6 0.235
files gen 2 2 1 8 0.249
containers gen 6 12 7 25 0.253
asdl_generated gen 2 1 2 7 0.282
escape gen 3 9 4 9 0.335
length gen 2 4 8 5 0.396
control_flow gen 3 2 3 7 0.430
tuple_return_value gen 2 1 3 3 0.663
varargs gen 21 21 26 29 0.732
cartesian gen 5 9 12 6 0.835
scoped_resource gen 6 0 3 6 0.982

raw benchmark files