(не прямой ответ, но тот, который, я думаю, должен быть дан)
Из вашего комментария,
"cletus - я очень уважаю ваши мысли и мнения, но вы дали мне точку зрения программирования и разработки программного обеспечения высокого уровня, а это не то, что я ищу. Я не могу научиться игнорировать оптимизацию, пока не получу интуитивный смысл для стоимости различных стилей реализации и / или возможность оценить эти затраты. - Джейсон С. 14 июля 2009 г. в 14:27 "
Вы всегда должны игнорировать оптимизацию, пока она не станет проблемой. Наиболее важно, чтобы система была пригодна для использования разработчиком (чтобы они могли сделать ее доступной для пользователя). Очень редко вы должны заниматься оптимизацией, ведь за ~ 20 лет профессионального кодирования я заботился об оптимизации всего два раза:
- Написание программы, основной целью которой было быть быстрее, чем другой продукт
- Написание приложения для смартфона с целью уменьшения объема данных, передаваемых между клиентом и сервером
В первом случае я написал некоторый код, затем запустил его через профилировщик, когда я хотел что-то сделать, и я не был уверен, какой подход лучше (для скорости / памяти), я бы запрограммировал один способ и увидел результат в профилировщик, затем код другой способ и увидеть результат. Тогда я бы выбрал более быстрый из двух. Это работает, и вы узнаете много нового о решениях низкого уровня. Я, однако, не позволил этому влиять на классы более высокого уровня.
Во втором случае не было никакого программирования, но я сделал то же самое, посмотрев на отправляемые данные и выяснив, как уменьшить количество отправляемых сообщений, а также количество отправляемых байтов.
Если ваш код понятен, вам будет легче ускорить его, если вы обнаружите, что он медленный. Как сказал Клетус в своем ответе, вы изменяете размер один раз - три раза ... один раз будет быстрее, чем три. С более высокой точки зрения один раз проще понять, чем три раза, поэтому он с большей вероятностью будет правильным.
Лично я предпочел бы получить правильный ответ медленно, чем неправильный ответ быстро. Как только я знаю, как получить правильный ответ, я могу выяснить, где система работает медленно, и заменить ее на более быстрые реализации.