A time tested optimization pattern. * First, make the code do what it is supposed to do. Do not try to optimize for size or speed yet. DoTheSimplestThingThatCouldPossiblyWork. * Second, reduce redundancy. Refactoring common code to a common location is easier once the code works, harder after it has been optimized for performance. OnceAndOnlyOnce. * Third, optimize execution time. ProfileBeforeOptimizing. See also MakeItWorkMakeItRightMakeItFast. (Make It Small is basically a subset of Make It Right.)