2013-07-22 6 views
1

Я профилирую приложение userland на netbsd с gprof и наблюдая clock_gettime, используя 30% -ые циклы. Gprof не показывает, откуда он вызван (он показывает некоторую функцию, которая явно не вызывает clock_getttime). Приложение использует сторонний код, включая libevent 1.4 (который, как представляется, использует clock_gettime). Я искал удаление вызова из этого, но не мог определить многое.Clock_gettime показывает высокое использование во время профилирования кода

  1. Я не понимаю, почему это займет столько времени. Любые входы будут оценены. Я также видел, как gettimeofday проводит много циклов. В общем, почему бы время вовлекать так много циклов обработки
  2. Есть ли способ оптимизировать clock_gettime() или мы можем использовать любой другой вызов?
  3. Возможно ли, что gcc сам добавляет этот вызов к коду, когда он скомпилирован с -pg для целей профилирования? Спасибо за любые ответы

ответ

1

Это все относительно какой-либо другой программе делает, и иметь в виду, что если вы делаете какие-либо ввода/вывода, фактическое время процессора ваша программа использует может быть небольшим, и gprof ничего другого не видит. Итак, если некоторые вызовы процедур синхронизации застряли там, и их вызывают достаточно часто, они могут показать высокий процент.

Почему нет gprof показать, откуда их вызывают? Для подпрограмм, скомпилированных с помощью -pg, он пытается выяснить, кто является вызывающим, когда введена какая-либо подпрограмма. Он пытается, но это не значит, что это удастся. В любом случае, that's gprof.

+0

Спасибо. Есть ли способ оптимизировать clock_gettime или сравнить производительность разных таймеров, которые могут использовать clock_gettime. – doon

+0

@doon: Смотрите, я не оптимизирую этот способ. Я ищу, что в моем собственном коде отвечает за потраченное время. [* Я использую этот метод. *] (Http://stackoverflow.com/a/378024/23771) –

 Смежные вопросы

  • Нет связанных вопросов^_^