Если вы запутались, , как и большинство поставщиков профилировщиков .
Первое, что нужно понять, - программы не медленные, потому что они имеют медленные части (узкие места).
Они медленные, потому что делают больше, чем должны. У них время истощается.
Это похоже на скачки.
Узким местом было бы узкое место на трассе, где лошади должны накапливаться и замедляться.
Поток времени был бы похож на другой трек, слитый с первым, по которому бродят лошади и им нужно пройти дополнительное расстояние.
Тогда может быть другой трек, слитый с этим, и другой, и так далее.
Функциональный вызов, которого можно избежать, является примером утечки времени.
Вот как я нахожу потери времени. Это просто и не зависит от языка.
Вы даже можете сделать это с помощью простого инструмента, такого как jStack .
Создатели профилировщиков имеют в виду хорошо, но им мешает куча запутанных понятий.
Например, «где проводится время». Если это означает «где встречается программный счетчик чаще всего», это похоже на то, что лошадь находится на неправильной трассе.
Вы могли бы попытаться сократить этот гоночный трек, но настоящая проблема в том, что лошадь даже не должна быть там. то есть есть вызов функции, которого следует избегать.
Например, «статистическая точность измерений». Вам нужно измерить, сколько лошади потребуется, чтобы обойти неправильный ипподром, чтобы понять, что он находится на неправильном ипподроме?
Нет, вам просто нужно сделать снимок (образец стека).
Чем дольше он находится на неправильной трассе, тем больше вероятность, что вы это увидите.
Если вы видите это там дважды, вы знаете, в чем проблема.
Например, называть его «CPU Profiler», что является поводом игнорировать время ввода-вывода.
Иногда трата времени - это ненужный ввод / вывод, о котором вы не знали.
Это было бы похоже на то, как лошадь останавливается, чтобы жевать мешок овса.
Если вы можете делать снимок только во время бега лошади, вы никогда не заметите .
Вы бы только заметили, что время было подозрительно долгим.
Есть больше, откуда пришли ...