Оптимізація циклів

Цикли - це багаторазове повторення певної ділянки коду. Саме тут слід насамперед шукати «вузькі» місця.

for чи while?

За швидкістю роботи for і while приблизно однакові. Але рівновага може коливатися в залежності від використовуваного заліза, платформи, браузера. Наприклад, за деякими джерелами for значно швидше в IE. На противагу цьому деякі тести показують, що while з постумовою має кращу продуктивність.

Т.к. for більш компактний і дає кращу читальність коду, використовуючи за умовчанням його. Якщо ж результат не задовольняє, тоді проводжу експерименти з while.

Мінімум операцій

Забираємо з циклу все, що можна прибрати. Цей пункт досить очевидний, докладно не будемо зупинятися.

Оптимізація логічного порівняння

Ця операція так само проводиться при кожній ітерації, тому так само має важливе значення.

Оптимізуємо for

  1. прибираємо обчислення довжини масиву кожному кроці;
  2. об'єднуємо ініціалізацію змінної циклу та обчислення довжини масиву;
  3. починаємо ітерацію з останнього елемента, рухаючись до першого;
  4. об'єднуємо вирази порівняння та декременту.

Оптимізуємо while

Розгортання циклу

Метою розгортання циклу є скорочення витрат ресурсів з його обробку шляхом скорочення кількості ітерацій.

або такий варіант:

Скоротили кількість ітерацій удвічі. За аналогією можна скоротити кількість кроків на більшу кількість разів. Даний варіант оптимізації краще застосовувати, коли заздалегідь відома кількість кроків, щоб мати можливість підібрати розмір розгортки таким чином, щоб уникнути після закінчення циклу додаткових перевірок і операцій.