No matter how fast our hardware gets, the performance of our system always matters. Programmers tend to add complexity and sophistication to their systems to match any hardware performance improvements, so there is always a need to design software that achieves good performance on whatever hardware is available to us.
This instantly raises a question: what do we mean by performance? Most of us have an informal sense of what we mean. Perhaps we mean we don’t want to wait for our commands to complete. Perhaps we mean we want to run complex calculations on very large data sets fast enough for the results to be useful. Perhaps we mean we want to get the most possible work through a given piece of hardware that we possibly can. Perhaps we mean we want to use as little space as possible on a storage device, or send as few bits across a network as possible. Maybe we care about how long a user has to wait before he starts to see some response from the system, but maybe we care about how long it takes for the entire job to complete.
As these potential answers to the performance question suggest, there’s a lot more to understanding performance in a computer system than one might initially think. And there are yet more complexities in actually providing a valid answer to a particular performance question, such as “how many web requests per second can my server handle,” or “will my VoIP call provide comprehensible speech to the listener if run it over a particular network,” or “how many buffers should I allocate in my operating system to make sure that I/O is not delayed too much?”
Leave a Reply
You must be logged in to post a comment.