-
Chapter 1: Profiling
-
What are the ways to profile your code?
-
What insights can I gain from a profile?
-
-
Chapter 2: Understanding Performant Programming
- How does a computer work and how does that affect my code performance?
-
Chapter 3: Lists and Tuples
-
How do lists and tuples work?
-
What are the performance implications of this?
-
-
Chapter 4: Dictionaries and Sets
-
How do dictionaries and sets work?
-
What are the performance implications of this?
-
-
Chapter 5: Iterators
-
How do iterators work?
-
How can I use them to reduce memory in my code?
-
How can I use them to reduce the CPU operations needed in my code?
-
-
Chapter 6: Matrix and Vector Computation
-
How does the CPU perform matrix/vector operations?
-
What are the ways I can profile the efficiency of these operations?
-
How can I speed up code given a profile?
-
-
Chapter 7: Compiling to C
-
What are the automated ways to compile my python to C?
-
What are the manual ways to compile my python to C?
-
How can I use these technologies to speed up my code and not slow down development?
-
-
Chapter 8: Concurrency
-
How does concurrency work and how does python support it?
-
How can I speed up multiple IO operations?
-
How can I hide IO wait?
-
-
Chapter 9: Multiprocessing
-
What is multiprocessing?
-
How can I speed up my code on a multiple CPU machine?
-
What are the subtleties of muli-CPU code?
-
-
Chapter 10: Clusters and Job Queues
-
How can I extend my code to a cluster?
-
What are some of the pain-points with clusters?
-
What is a queue and how is it useful?
-
-
Chapter 11: Using Less Ram
-
How can I use algorithms to reduce the RAM usage of my code?
-
What are tries and probabilistic data structures?
-
- High-Performance Computing with Python 3.x