Полезно помнить об этом:
- Одна важная цель профилировщика - помочь программисту сделать свою программу максимально эффективной, найдя действия в своем коде, которыеответственность за значительный процент времени и может быть сделано за меньшее время.
Звучит очевидно, верно?Но обратите внимание:
- Там написано locate , а не measure .Измерение может быть средством до конца определения местоположения, но на самом деле оно очень косвенное.
- В нем говорится действия , а не функции / методы и не обязательно горячие точки .Чаще всего это пунктов вызова функций , которые стоят больше времени, чем ожидалось, и на самом деле это не нужно делать.
- В его / ее коде написано .Это единственный код, который программист может изменить.Бесполезно осознавать, что в какой-то системной процедуре тратится много времени.
- В нем говорится времени , а не процессорного времени .Если программа тратит значительный процент времени, заблокированного из-за ввода-вывода или других системных функций, это так же важно, как и время процессора.
- В нем говорится: существенный процент , а не точновремя .Если находится дорогостоящее мероприятие, важно то, что оно находится, а не неопределенность того, насколько оно дорого.(Если вы охотитесь за золотыми самородками, вы сначала измеряете один, а затем находите его?)
Так что не любой старый сэмплер или инструментарий будет служить этой цели.
ИМХОто, что работает лучше всего, это то, что собирает сэмплы стека, а не только счетчик программы, и сэмплы в произвольное время настенного времени, а не только время процессора, и сообщает не только по функции, но и по строке кода, процент выборок, содержащихэта линия. Zoom - это такой профилировщик.
Другими словами a) Не берите большое количество маленьких выборок и собирайте их в числа.б) Сделайте небольшое количество больших выборок и поймите, что они вам говорят.
В качестве крайнего примера, если берутся всего три выборки из стека, если какое-то конкретное утверждение (или инструкция) появляется где-то надва из них, сколько стоит это заявление?Ну, это мыслимое это просто совпадение - ложный положительный результат, но в среднем , что сэкономит (2 + 1) / (3 + 2) = 60% от общего времени выполнения.С точки зрения "взрыва за доллар", это трудно победить.
Вот более подробное резюме проблем .