Пять правил программирования, написанных Робом Пайком:
You can’t tell where a program is going to spend its time. Bottlenecks occur in surprising places, so don’t try to second guess and put in a speed hack until you’ve proven that’s where the bottleneck is.
Роб Пайк участвовал в разработке операционных систем Inferno, Plan 9, а также языков Alef, Limbo, Newsqueak и на данный момент занят языком Go.
- Measure. Don’t tune for speed until you’ve measured, and even then don’t unless one part of the code overwhelms the rest.
- Fancy algorithms are slow when n is small, and n is usually small. Fancy algorithms have big constants. Until you know that n is frequently going to be big, don’t get fancy. (Even if n does get big, use Rule 2 first.)
- Fancy algorithms are buggier than simple ones, and they’re much harder to implement. Use simple algorithms as well as simple data structures.
- Data dominates. If you’ve chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming.
Перевод (копипаст с блога http://vladimir-vg.github.com/) этих пяти правил:
-
Никто не знает какая часть кода будет потреблять больше ресурсов.
Узкие места бывает в совершенно неожиданных точках, поэтому не пытайтесь
угадывать и как-то оптимизировать код до тех пор пока вы на деле не выяснили что эта часть действительно является узким местом.
-
Измеряйте. Не пытайтесь оптимизировать пока вы не провели измерений.
И даже после этого, не оптимизируйте, пока не убедитесь что эта часть кода
тяжелее всего остального.
-
Нетривиальные алгоритмы работают медленно если достаточно маленькое,
и обычно именно так и случается. Зато в них достаточно большие константы
сложности. Пока не убедитесь что будет достаточно большим, не усложняйте код
нетривиальными алгоритмами. (И даже если достаточно велико,
убедитесь что выполняется второе правило)
-
В нетривиальных алгоритмах гораздо легче ошибиться и их гораздо
сложнее реализовать. Используйте простые алгоритмы и простые структуры данных.
-
Данные важнее кода. Если вы правильно подберёте структуры данных,
то код будет почти очевидным. Именно данные являются главной вещью в программировании, а не код.