I am working on an iOS port of my Android game Concussion Boxing.
Inside my rendering function I have a certain loop that use the same struct for each mesh that is drawn. This struct has std::vector variables of various kinds in it.
Whenever I want to use this struct to pass parameters to a function I would resize its std::vector variables.
Allocating memory is a CPU demanding operation that is why resize can be used to save on these allocation operations.
A good idea would be to declare the struct outside of the loop so we can reuse the memory that was allocated in the previous iteration of the loop.
However, there is a case in which resize won’t work so well. If you have a std::vector<std::vector<float>> then resize will have a performance hit.
I don’t know what is going inside resize in this case but I found that simpley having a pointer to float or a struct of a constant amount of floats(in an array) will be a lot more efficient rather than using a vector of a vector.
For reference, I improved my game’s frame CPU time from 27 ms to 22 ms by using less vectors of vectors.