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 1 16 0.000
loops gen 1 3 3 362 0.002
fib_recursive gen 4 6 6 1,084 0.003
fib_iter gen 6 7 7 956 0.006
modules gen 2 0 1 234 0.007
asdl_generated gen 10 8 9 519 0.019
scoped_resource gen 27 29 26 1,355 0.020
parse gen 21 25 24 947 0.022
containers gen 6 6 4 126 0.049
classes gen 2 1 2 36 0.052
tuple_return_value gen 14 14 13 253 0.055
files gen 6 6 6 103 0.057
length gen 31 36 35 247 0.125
cartesian gen 69 73 70 398 0.175
escape gen 92 101 92 437 0.211
cgi gen 256 247 258 742 0.345
varargs gen 15 14 15 22 0.681
control_flow gen 134 178 132 153 0.879

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.5 4.5 11.5 0.39
asdl_generated gen 3.4 3.4 3.5 7.7 0.44
cartesian gen 3.4 3.5 3.4 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.7 0.44
scoped_resource gen 3.5 3.5 3.5 7.9 0.45
escape gen 3.5 3.5 3.5 7.7 0.46
fib_recursive gen 3.5 3.5 3.7 7.7 0.46
fib_iter gen 3.5 3.5 3.5 7.6 0.47
length gen 3.5 3.7 3.5 7.6 0.47
parse gen 3.8 3.7 3.7 8.1 0.47
loops gen 3.7 3.5 3.5 7.7 0.47
modules gen 3.7 3.5 3.5 7.7 0.47
cgi gen 3.7 3.5 3.4 7.6 0.48
tuple_return_value gen 3.7 3.8 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.7 7.6 0.50
containers gen 28.3 28.5 28.4 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
asdl_generated gen 0 2 1 7 0.000
modules gen 0 1 1 9 0.000
fib_iter gen 1 0 0 9 0.114
classes gen 1 1 1 7 0.134
tuple_return_value gen 1 3 2 7 0.142
files gen 1 1 1 6 0.164
control_flow gen 2 1 3 9 0.221
fib_recursive gen 3 0 0 12 0.224
scoped_resource gen 3 2 4 9 0.326
loops gen 2 0 0 5 0.341
containers gen 8 8 10 24 0.346
gc_stack_roots gen 1 1 0 4 0.350
parse gen 5 2 2 8 0.613
varargs gen 23 25 23 34 0.676
cgi gen 5 6 2 7 0.716
cartesian gen 6 5 5 8 0.745
escape gen 6 3 5 7 0.858
length gen 8 1 3 8 0.994

raw benchmark files