How to process a lot of data quickly
There are many measurable performance characteristics that can be applied to an application. Which ones to use depends on the purpose of the application. They are usually listed as non-functional requirements. The most typical set includes the following three:
- Throughput: The number of requests processed per a unit of time.
- Latency: The time elapsed between the moment a request was submitted and the moment the first byte of the response is received. It is measured in seconds, milliseconds, and so on.
- Memory footprint: The amount of memory—min, max, or average— that the application consumes.
In practice, latency is often calculated as the inverse of the throughput. These characteristics vary as a load grows, so the non-functional requirements typically include the maximum value for each of them under the average and maximum load.
Often, the improvements in throughput and latency are only at the expense of the memory, unless adding a faster CPU can improve...