In this chapter we've seen:
- how to implement benchmarks using JMH;
- performance improvements that come from changing the interface to allow more efficient operations; and
- performance improvements that come internal changes invisible to the end user.
We've also see the interplay between reasoning, in this case based on a model of program performance, and empiricial evidence that confirms or refutes the predictions of that model.