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 11 0.000
modules gen 0 1 1 232 0.000
loops gen 1 1 1 355 0.002
fib_recursive gen 4 5 4 1,113 0.003
fib_iter gen 6 7 7 950 0.006
asdl_generated gen 6 10 7 505 0.012
scoped_resource gen 29 31 29 1,372 0.021
classes gen 1 2 3 37 0.024
parse gen 23 25 24 957 0.025
files gen 4 6 7 99 0.040
containers gen 7 10 6 125 0.054
tuple_return_value gen 15 17 14 248 0.061
length gen 33 31 37 235 0.139
cartesian gen 71 77 66 395 0.181
escape gen 95 95 91 442 0.214
cgi gen 267 250 242 739 0.361
varargs gen 19 18 18 34 0.550
control_flow gen 133 178 138 144 0.926

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.2 4.3 11.5 0.39
fib_recursive gen 3.4 3.7 3.5 7.7 0.44
parse gen 3.7 3.7 3.7 8.3 0.44
asdl_generated gen 3.4 3.4 3.4 7.6 0.45
cartesian gen 3.4 3.5 3.4 7.6 0.45
gc_stack_roots gen 3.4 3.5 3.3 7.6 0.45
scoped_resource gen 3.4 3.5 3.5 7.6 0.45
files gen 3.5 3.7 3.7 7.7 0.46
cgi gen 3.5 3.5 3.5 7.6 0.47
loops gen 3.5 3.5 3.5 7.6 0.47
escape gen 3.7 3.5 3.4 7.7 0.47
tuple_return_value gen 3.7 3.7 3.7 7.7 0.47
fib_iter gen 3.7 3.5 3.5 7.6 0.48
length gen 3.7 3.5 3.5 7.6 0.48
modules gen 3.7 3.5 3.7 7.6 0.48
control_flow gen 3.8 3.8 3.7 7.6 0.50
containers gen 28.5 28.6 28.5 48.4 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
cgi gen 0 2 2 11 0.000
tuple_return_value gen 0 0 1 10 0.000
fib_iter gen 1 0 0 11 0.092
scoped_resource gen 1 2 2 11 0.092
modules gen 1 1 0 12 0.115
gc_stack_roots gen 1 0 1 9 0.150
parse gen 2 2 2 10 0.204
loops gen 2 2 1 8 0.208
control_flow gen 2 1 0 8 0.249
containers gen 7 4 8 27 0.250
classes gen 2 1 0 6 0.295
fib_recursive gen 3 1 2 8 0.335
asdl_generated gen 4 0 3 9 0.440
escape gen 4 11 6 9 0.443
files gen 3 1 0 6 0.493
length gen 6 5 2 12 0.512
cartesian gen 4 3 8 5 0.803
varargs gen 20 21 20 22 0.895

raw benchmark files