Introduction
Welcome
()
What you should know
()
Use Codespaces with this course
()
1. Tools of the Trade
Always profile first
()
General tips
()
Measuring time
()
CPU profiling
()
line_profiler
()
Tracing memory allocations
()
memory_profiler
()
2. Picking the Right Data Structure
Big-O notation
()
bisect
()
deque
()
heapq
()
Beyond the standard library
()
3. Tricks of the Trade
Local caching of names
()
Remove function calls
()
Using __slots__
()
Built-ins
()
Allocate
()
4. Caching
Overview
()
Pre-calculating
()
lru_cache
()
Joblib
()
5. Cheating
When approximation is good enough
()
Cheating example
()
6. Parallel Computing
Amdahl's Law
()
Threads
()
Processes
()
asyncio
()
7. Beyond Python
NumPy
()
Numba
()
Cython
()
PyPy
()
C extensions
()
8. Adding Optimization to Your Process
Why do we need a process?
()
Design and code reviews
()
Benchmarks
()
Monitoring and alerting
()