# Profiling and Optimisation in Python to dos
- [ ] (Louise) Get some resources on testing for HackMD doc or similar.
- [ ] (Jost) Change testing example to something where we make a change to a function, e.g. numpy instead of list
- [ ] (Louise) Add `timeit` to Profiling section (also `defaulttimer`)
- [ ] After premature optimisation section, add a new section about not doing all steps manually and letting optimal Python/C code be used wherever possible. Include content from start of NumPy section.
- [ ] (Jost) Revise content of dictionary and sets sections to link in with new section above
- [ ] (Jost) Think about whether diagrams would be useful for the secrching section, Louise has volunteered to help if needed. Or use library analogy.
- [ ] Skip bytecode section? Perhaps use smaller example.
- [ ] Skip scope section, not going to be useful for substantial loops etc.
- [ ] "Built in Functions ~~Operators~~" make edit to title.
- [ ] Add an example to Built-in Functions section. Or maybe link to earlier material?
- [ ] Take Vectorization section out.
- [ ] Replace with a new section on numpy's automatic array-wise operations
- [ ] Link to other packages that use numpy, perhaps case study (maybe also mention case study earlier - shapely)
- [ ] Try to simplify the pandas example - maybe only use one column?
- [ ] Exercises on numpy broadcasting
- [ ] Remove pandas to dict section, put as link in HackMD instead
- [ ] Example for Filter Early section
- [ ] Make the point early in Optimisation that we need to know _where_ to optimise before putting the effort in to speed the code up
- [ ] (Louise) Check in on Pandas filtering example. Can I find a commonality with the example from the profiling section? If not, what else could work?