- Optimize the slow code first. In the case of Python, PyPy helps you use less space and work faster than CPython’s typical bulk allows for.
- Profile codes (using CProfile or PyCallGraph, say) to analyze how they work in different situations and estimate the time taken.
- Python strings tend to be immutable and slow. Concatenate them with the .join() method rather than relying on the memory-hungry (+) operator alone.
- Use list comprehension rather than loops for faster coding and execution.
- For memory optimization, prefer xrange over the range function to speed up the creation of integer lists.
Full post here, 4 mins read