Once a design such as a linked-list of polymorphic classes being iterated on in a loop is established, it is hard to refactor.
Those with performance experience would understand that this design will have caching, branch prediction and similar issues.
However, I totally agree with you that the overall implementation should be driven by iterative coding and profiling.
BUT when it is time to choose memory layouts, data models, etc - planning in advance with an eye to performance is very valuable.
Once a design such as a linked-list of polymorphic classes being iterated on in a loop is established, it is hard to refactor.
Those with performance experience would understand that this design will have caching, branch prediction and similar issues.
However, I totally agree with you that the overall implementation should be driven by iterative coding and profiling.
BUT when it is time to choose memory layouts, data models, etc - planning in advance with an eye to performance is very valuable.