Мне сказали, что Акула может сделать это, так что инструменты тоже должны, но вы должны сказать ему, что делать:
Делать выборку по времени настенных часов (нетолько процессорное время), из стека вызовов функций (не только ПК счетчика программ).
Чтобы сообщить вам строки кода (не только функции), которые появляются на значительном процентевыборки стека.
Выборка стека включает ПК и каждую инструкцию вызова, ведущую к тому месту, где находится ПК.Каждая инструкция в стеке несет совместную ответственность за этот отрезок времени.
Таким образом, любая строка кода, ответственная за X% времени, будет находиться в стеке X% времени.Если он достаточно большой, чтобы на него смотреть, вы увидите его на примерах.Вы можете получить много образцов, но на самом деле вам не нужно много.Это потому, что более важно определить местонахождение проблемы, чем измерить ее с большой точностью.
Если ваша самая большая проблема, если ее устранить, сэкономит вам 5%, она будет отображаться на 5% или более выборок.Если он меньше, ваш код довольно оптимален.Скорее всего, он намного больше, поэтому у вас не будет проблем с точным определением, где он находится.
Добавлено: Пример профилировщика, который выполняет выборку стека в настенное время и показывает процент за строкой Zoom , поэтому я предлагаю вам посмотреть это видео.Затем попытайтесь заставить инструменты делать то же самое.