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 10 0.000
modules gen 0 0 0 206 0.000
loops gen 1 3 2 313 0.003
fib_recursive gen 6 5 4 995 0.006
fib_iter gen 5 6 6 740 0.007
asdl_generated gen 8 8 10 512 0.015
scoped_resource gen 30 30 25 1,273 0.023
parse gen 23 26 21 896 0.026
classes gen 1 1 2 33 0.034
containers gen 4 4 5 105 0.040
tuple_return_value gen 12 16 14 225 0.055
files gen 5 4 6 89 0.058
length gen 27 30 30 238 0.114
cartesian gen 64 73 64 361 0.178
escape gen 84 94 83 381 0.222
cgi gen 184 179 186 655 0.282
varargs gen 17 19 18 27 0.641
control_flow gen 125 168 124 137 0.913

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.6 4.5 4.3 11.5 0.40
asdl_generated gen 3.3 3.5 3.5 7.9 0.42
scoped_resource gen 3.4 3.5 3.7 7.7 0.44
gc_stack_roots gen 3.4 3.4 3.4 7.6 0.45
cgi gen 3.5 3.4 3.5 7.7 0.46
loops gen 3.5 3.7 3.7 7.6 0.47
tuple_return_value gen 3.7 3.8 3.7 7.9 0.47
cartesian gen 3.7 3.5 3.5 7.7 0.47
control_flow gen 3.7 3.9 3.9 7.7 0.47
escape gen 3.7 3.4 3.4 7.7 0.47
length gen 3.7 3.5 3.8 7.7 0.47
modules gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.7 3.7 7.6 0.48
fib_recursive gen 3.7 3.7 3.8 7.6 0.48
parse gen 3.9 3.8 3.8 8.1 0.48
files gen 3.9 3.9 3.8 7.6 0.52
containers gen 28.7 28.7 28.7 48.5 0.59
varargs gen 5.5 5.8 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 0 1 5 0.000
scoped_resource gen 0 2 5 7 0.000
parse gen 1 0 3 7 0.142
gc_stack_roots gen 1 0 0 7 0.160
files gen 1 2 0 6 0.173
fib_iter gen 1 0 0 5 0.181
classes gen 1 1 0 5 0.226
control_flow gen 1 0 1 4 0.248
cgi gen 1 0 0 4 0.249
loops gen 1 0 0 4 0.270
containers gen 8 8 8 26 0.324
modules gen 1 1 1 3 0.367
escape gen 2 1 3 5 0.403
asdl_generated gen 2 2 0 4 0.479
varargs gen 7 5 6 10 0.686
cartesian gen 4 2 4 3 1.320
length gen 5 2 2 3 1.677
tuple_return_value gen 2 0 0 1 1.905

raw benchmark files