The notions of Big O and single-algorithm performance on a single
CPU must be extended in order to understand performance of programs
on more complex computer architectures. We need to also account for:
- Disk access time
- Network bandwidth and data communication time
- Coordination of processes on separate machines
- Congestion and bottlenecks as many computers or many users
want the same resource.