Может ли perf отображать количество необработанных образцов? - PullRequest
5 голосов
/ 03 сентября 2010

Мне бы хотелось, чтобы perf выводил необработанные значения выборки, а не проценты. Это полезно для определения того, ускорила ли я функцию, которую пытаюсь оптимизировать.

Чтобы было ясно, я хотел бы сделать что-то вроде

perf record ./a.out
perf report

и посмотрите, сколько раз perf выбрал каждую функцию в a.out.

Акула может сделать это на Mac, как может (я полагаю) Xperf . Возможно ли это в Linux с perf?

Ответы [ 2 ]

5 голосов
/ 30 ноября 2010

perf report (версия 2.6.35.7) теперь поддерживает флаг -n, что делает то, что я хочу.

1 голос
/ 03 сентября 2010

Вы хотите увидеть, если ваши изменения в функции имели значение. Я предполагаю, что вы также хотите получить любую помощь, чтобы выяснить, какую функцию вам нужно изменить. Эти две цели не совпадают.

Многие инструменты предоставляют вам настолько широкий набор статистики или счетчиков, насколько они могут придумать, как будто наличие большего количества статистики поможет любой цели.

Можете ли вы заполучить RotateRight / Zoom или любой инструмент, который дает вам возможность делать сэмплы на настенные часы, предпочтительно под контролем пользователя? Такой инструмент даст вам время и проценты, потраченные на любую подпрограмму или строку кода, в частности включительно время.

Причина, по которой время включения так важно, состоит в том, что каждая отдельная строка кода, которая выполняется, отвечает за определенную долю времени, например, если бы строки не было, эта часть времени не была бы потрачена, а общее время будет уменьшен на эту долю. В течение этой доли времени, независимо от того, тратится ли она на один большой кусок или на тысячи маленьких кусков, эта строка кода находится в стеке вызовов, где образцы стека обнаружат его со скоростью, равной его доле. Вот почему выборка из стека настолько эффективна при поиске кода, который стоит оптимизировать, будь то листовые инструкции или вызовы в дереве вызовов.

Лично эта ссылка дает информацию о том, как и почему метод, который я использую, который не является причудливым, но настолько же или более эффективен, чем любой метод или инструмент, который я видел. Вот обсуждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...