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...