Я согласен со всеми ответами, уже выдвинутыми до сих пор ... Я просто хочу затронуть еще один упущенный аспект оптимизации кода: ожидание качества.
Проблема оптимизации кода обычно возникает, когда пользователь пытается решить все большие и большие проблемы, а кода недостаточно для удовлетворения потребностей / ожиданий пользователя. Количество времени, которое нужно потратить на оптимизацию кода, зависит от того, насколько будет соответствовать ожиданиям. Безусловно, стоит потратить значительное время, если есть острая необходимость в конкурентном преимуществе (например, завершение и публикация вашего исследования на горячую тему раньше других).
Конечно, сколько времени должно быть потрачено, зависит от того, насколько быстро вам это нужно и насколько переносимым должен быть код. Часто эти две потребности находятся в конфликте друг с другом, и вы должны решить, что является более важным, прежде чем начинать оптимизацию. Чем более портативным вы хотите его использовать, тем больше вам придется полагаться на высокоуровневые изменения в коде (алгоритм / структура данных). Чем быстрее вы хотите, чтобы код выполнялся, он должен быть настроен на низкоуровневые оптимизации, специфичные для конкретной машины (например, оптимизация кода / компилятора / среды выполнения).