Не станет ли оптимизация кода ненужной? - PullRequest
7 голосов
/ 13 июня 2009

Если закон Мура остается в силе, и процессоры / графические процессоры становятся все более быстрыми, программное обеспечение (и, по ассоциации, вы, разработчики программного обеспечения) все еще раздвигают границы до такой степени, что вам все еще нужно оптимизировать свой код ? Или наивное факториальное решение будет достаточно хорошим для вашего кода (и т. Д.)?

Ответы [ 26 ]

0 голосов
/ 13 июня 2009

Да, мы находимся в точке, где оптимизация имеет значение и будет в обозримом будущем. Потому что:

  • Скорость ОЗУ увеличивается с меньшей скоростью, чем скорость процессора. Таким образом, между ЦП и ОЗУ все еще увеличивается разрыв в производительности, и, если ваша программа обращается к ОЗУ много, вам необходимо оптимизировать шаблоны доступа для эффективного использования кеша. В противном случае сверхбыстрый процессор будет простаивать 90% времени, просто ожидая поступления данных.
  • Количество ядер увеличивается и увеличивается. Ваш код получает выгоду от каждого добавленного ядра или он работает на одном ядре? Здесь оптимизация означает распараллеливание, и, в зависимости от поставленной задачи, это может быть сложно.
  • Скорости ЦП никогда не догонят экспоненциальные алгоритмы и другие виды грубой силы. Как хорошо иллюстрируется этим ответом .
0 голосов
/ 13 июня 2009

Правильно или нет, по моему мнению, это уже происходит, и это не всегда плохо. Более качественное оборудование предоставляет разработчику возможность сосредоточить больше энергии на решении проблемы, а не беспокоиться о дополнительных 10% использования памяти.

Оптимизация неоспорима, но только когда это необходимо. Я думаю, что дополнительная аппаратная мощность просто уменьшает количество случаев, когда это действительно необходимо. Однако тот, кто пишет программное обеспечение для запуска космического корабля на Луну, лучше оптимизирует свой код:)

0 голосов
/ 13 июня 2009

Оптимизация кода всегда будет требоваться в некоторой степени, а не только для ускорения выполнения и снижения использования памяти. Например, поиск оптимального энергосберегающего метода обработки информации будет основным требованием в дата-центрах. Навыки профилирования станут намного важнее!

0 голосов
/ 13 июня 2009

Учитывая, что компьютеры примерно в тысячу раз быстрее, чем несколько десятилетий назад, но, как правило, не выглядят намного быстрее, я бы сказал, что у нас ДОЛГОЙ путь, чтобы перестать беспокоиться об оптимизации. Проблема в том, что по мере того, как компьютеры становятся более мощными, у нас есть компьютеры, которые все больше и больше работают за нас, чтобы мы могли работать на более высоких уровнях абстракции. Оптимизация на каждом уровне абстракции остается важной.

Да, компьютеры делают много вещей намного быстрее: вы можете нарисовать Мандельброта за считанные минуты, которые раньше были днями компьютерного времени. GIF загружается почти мгновенно, а не занимает видимые секунды, которые будут нарисованы на экране. Многие вещи быстрее. Но просмотр, например, не намного быстрее. Обработка текста не намного быстрее. Поскольку компьютеры становятся все более мощными, мы просто ожидаем большего, и мы заставляем компьютеры делать больше.

Оптимизация будет важна в обозримом будущем. Однако микрооптимизации гораздо менее важны, чем раньше. Наиболее важной оптимизацией в наши дни может быть выбор алгоритма. Вы выбираете O (n log n) или O (n ^ 2) .... и т. Д.

0 голосов
/ 13 июня 2009

Стоимость оптимизации очень низкая, поэтому я сомневаюсь, что это станет необходимым, чтобы отказаться от нее. Реальная проблема заключается в поиске задач для использования всей имеющейся вычислительной мощности, поэтому вместо оптимизации мы будем оптимизировать нашу способность работать в параллельно .

0 голосов
/ 13 июня 2009

В конце концов мы не сможем стать быстрее, в конце концов мы будем ограничены пространством, поэтому вы видите новые процессоры под 3GHZ и многоядерные. Так что да, оптимизация все еще необходима.

...