What does it really mean to design software for high-performance? Performance is such a generic and misunderstood subject. In this talk the subject of performance will be explored. We will focus on what is means to achieve sufficient response times, throughput, and scalability. We will explore the difference between latency and response time and how our industry confuses both. We will also explore what it means to go parallel to increase throughput and achieve cost effective scalability.
Once the theory is out of the way we will dig into how modern hardware works and what we need to know about abstractions mapping to our software designs. These abstractions are the key to the models our code represents. The author has not meet many abstraction layers he did not enjoyed violating. There is a good reason for this. So many of our abstractions are leaky or just plain wrong.
We will finish off with describing how qualities of service such as performance can be incorporated in the development process to ensure there are no unpleasant surprises once we go into production. Oh and one last thing. If you design software for high-performance it does not become a mess of bit twiddling and compiler hacks. Good high-performance software is often some of the cleanest and most elegant software that is easy to maintain.