Нет, многие современные профилировщики выборки не имеют проблемы, описанной в отношении gprof.
На самом деле, даже когда это было написано, конкретная проблема на самом деле была скорее причудой того, как gprof
использует сочетание инструментария и выборки, а затем пытается реконструировать гипотетический график вызовов на основе ограниченного числа вызывающих/вызываемых абонентов. информацию и объединить ее с дискретизированной информацией о времени.
Современные профилировщики выборки, такие как perf
, VTune и различные профилировщики для языков, которые не компилируются в собственный код, могут захватывать полный стек вызовов с каждой выборкой, что обеспечивает точное время в отношении этой проблемы. В качестве альтернативы вы можете выполнить выборку без сбора стеков вызовов (что значительно снижает стоимость выборки), а затем представить информацию без какой-либо информации о вызывающем/вызываемом абоненте, которая все равно будет точной.
Это было в значительной степени верно даже в прошлом, поэтому я думаю, будет справедливым сказать, что профилировщики выборки никогда, как группа, действительно не демонстрировали эту проблему.
Конечно, профилировщики могут лгать по-разному. Например, получение результатов, точных на уровне инструкций, является очень сложной проблемой, учитывая современные ЦП с сотнями инструкций, выполняемых одновременно, возможно, по многим функциям, и сложные модели производительности, где инструкции могут иметь совершенно другую стоимость в контексте по сравнению с к их номинальным значениям задержки и пропускной способности. Даже эти сложные проблемы можно решить с помощью «аппаратной помощи», например, на последних чипах x86 с поддержка PEBS и более поздние связанные функции, которые помогут вам точно определить инструкцию менее предвзятым образом.
person
BeeOnRope
schedule
16.04.2018