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.