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
modules gen 0 0 0 243 0.000
loops gen 2 1 2 364 0.005
fib_recursive gen 5 6 5 1,108 0.005
fib_iter gen 6 6 6 959 0.006
asdl_generated gen 9 9 7 527 0.018
scoped_resource gen 29 27 26 1,361 0.021
parse gen 24 24 24 945 0.025
containers gen 4 9 4 125 0.031
files gen 3 5 6 103 0.033
tuple_return_value gen 13 14 14 250 0.052
classes gen 2 2 2 34 0.052
length gen 35 32 36 245 0.143
cartesian gen 68 79 69 390 0.175
escape gen 92 100 95 428 0.216
cgi gen 257 257 260 740 0.347
varargs gen 18 16 19 33 0.550
control_flow gen 134 177 135 150 0.892

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

System Time (milliseconds)

Lower ratios are better.

example name gen C++ C++-NoSouffle C++-Souffle Python C++ : Python
loops gen 1 2 1 10 0.084
classes gen 1 1 1 9 0.099
asdl_generated gen 1 1 3 10 0.103
fib_iter gen 1 1 1 9 0.113
scoped_resource gen 1 5 4 9 0.114
gc_stack_roots gen 1 1 0 9 0.154
fib_recursive gen 1 0 1 6 0.175
parse gen 2 3 2 11 0.178
control_flow gen 2 1 2 9 0.222
modules gen 1 1 1 6 0.233
length gen 3 4 3 10 0.302
containers gen 10 5 10 28 0.346
files gen 3 2 1 8 0.422
cgi gen 4 3 3 7 0.571
tuple_return_value gen 2 2 1 3 0.666
escape gen 6 4 3 9 0.670
varargs gen 20 23 19 24 0.840
cartesian gen 7 3 6 3 2.348

raw benchmark files