Здесь есть несколько отличных ответов.
Я бы только добавил, что с точки зрения большого количества настроек производительности, если каждый поток не был оптимизирован агрессивно, есть вероятность, что у него есть много места для сокращения цикла.
Чтобы провести аналогию с автогонкой на длинные дистанции, есть два способа выиграть:
- Заставь машину ехать быстрее
- Делать меньше остановок и обходов
По моему опыту, большинство программ, написанных в первый раз, весьма далеки от самого прямого пути, , особенно , когда программное обеспечение становится большим.
Чтобы найти потраченные впустую циклы в вашей программе, как сказал Кеннет Кокран, никогда не догадайтесь. Если вы что-то исправили, не доказав, что это проблема, вы сделаете предположение.
Популярным способом обнаружения проблем с производительностью является использование профилировщиков.
Однако я часто это делаю, и мой метод таков: http://www.wikihow.com/Optimize-Your-Program%27s-Performance