A predominant topic in the theory of evolutionary algorithms and, more generally, theory of randomized black-box optimization techniques is running-time analysis. Running-time analysis is aimed at understanding the performance of a given heuristic on a given problem by bounding the number of function evaluations that are needed by the heuristic to identify a solution of a desired quality. As in general algorithms theory, this running-time perspective is most useful when it is complemented by a meaningful complexity theory that studies the limits of algorithmic solutions.