Лучше не путать цели измерения и оптимизации.Это разные задачи.Измерение, хотя и полезно для количественной оценки результатов исправления чего-либо, плохо говорит вам, что нужно исправить.
Что касается измерения, то если я хочу сделать презентацию о том, как быстро что-то происходит, я хочу контролироватьсреда и хороший секундомер.Однако с целью оптимизации грубые измерения (например, выполнение чего-то 1000 раз) и использование простого таймера более чем достаточно.
Что касается оптимизации, меня не касается скорость.Я обеспокоен ненужной деятельностью.Нет необходимости запускать код на высокой скорости, чтобы найти его.
Когда запускается какая-либо программа, она отслеживает дерево вызовов.Оптимизация состоит в удалении как можно большего количества листьев (инструкций) и как можно большего количества фруктов (ввода / вывода).Хороший способ сделать это - обрезать целые ветви.
- Во всех программах, кроме самых маленьких, типичные возможности оптимизации состоят из точек вызова (строк кода, где вызываются функции, а не самих функций) что, когда кто-то понимает, сколько из них прорастает дерево вызовов, это действительно можно сделать другим способом.Одна невинно выглядящая строка кода может быть ответственна за большую часть всего дерева, и вы можете просто отрубить его.
Чтобы найти их, я думаю, что настенные часыстековая выборка - лучший способ.Это не обязательно для эффективного процесса, и довольно небольшое количество образцов работает так же хорошо (или лучше), чем большое количество образцов.Это необходимо делать повторно, потому что любая данная программа, как написано вначале, не содержит только одной возможности для ускорения.Содержит несколько. Вот пример.