Necessity is the mother of invention
I was already GPU poor, but a recent job change combined with rising component prices have also made me RAM and NVMe poor.
While I am nowhere close to the experts of optimisations in the early 2000s or 90s, I took this time to brush up on some fundamentals and key concepts in Python. As the saying goes:
"Premature optimisation is the root of all evil"
We are not looking for very deep level optimisations, these changes aim to follow the Pareto Principle where 80% of the outcome comes from 20% of the effort. The changes below may or may not be 20% effort but I would consider them low-effort.
As such, there won't be any discussion on performance profiling, where we are determining hot loops, cache misses, memory reallocations etc.
Iterators
Frankly I think this is an important concept that has a great carryover regardless of languages.…