ctilmes has given you excellent advice. I would add that "when you have to" is usually much more of an economic issue than a technical one. (e.g. Will the improved performance, over the expected life of the program, pay for the added development cost?)