Source: https://media.readthedocs.org/pdf/pyperformance/stable/pyperformance.pdf