Guidelines
- Avoid random memory access - prefer vectors when possible
- Avoid vector of pointers, prefer vector of values
- Keep things you use together close to one another in memory
- Keep data you are processing small
- Avoid rereading the same data from memory several times