LINUX.ORG.RU

Использование perf на qt проекте

 ,


0

4

Пытаюсь освоить использование perf на примере qt проекта
Создал тестовый проект https://github.com/mehelme/test_qt2
После сборки запускаю 0.sh (в нем может чего и не учел), результат Screenshot_20161219_083848.png

Вопросы:
1. Почему не вижу вызовов on_pushButton_clicked и on_pushButton_2_clicked
2. Почему не вижу исходников
3. Почему не указано что genRSA вызывалась 201 раз

Хотелось бы на этом примера понять, что основная нагрузка в программе была на genRSA и она вызывалась 200 раз из on_pushButton_clicked и 1 раз из on_pushButton_2_clicked

I-Love-Microsoft

★★★★★
Ответ на: комментарий от RazrFalcon

всем подошел, кроме скорости )
потому и решил попробовать perf

x905 ★★★★★
() автор топика

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

Видимо когда тестируемая программа спит (в фоне) perf не копит статистику (или это настраивается), то можно понять что грузит или делает программу медленно. Мне это помогало находить такие участки.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

в общем и целом да, я понял что «тормозит» genRSA, но кто и откуда её вызывал - не видно

x905 ★★★★★
() автор топика
Ответ на: комментарий от x905

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

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от x905

Попробуй «sudo perf report» и возможно узнаешь какая функция вызвала столь долгую работу. Вот тут описан пример: https://github.com/springmeyer/profiling-guide и есть про «perf report» - появится интерактивная ходилка по веткам функций и их процентам.

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

perf report выдал по сути тоже самое, что kcachegrind
проценты есть, но кто нету
потом почитаю подробнее, может чего найду

x905 ★★★★★
() автор топика
Последнее исправление: x905 (всего исправлений: 1)
Ответ на: комментарий от x905

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

I-Love-Microsoft ★★★★★
()

Почему не указано что genRSA вызывалась 201 раз

perf — семплирующий профилировщик, он с определённой частотой проверяет, где сейчас находится указатель исполнения, и разворачивает стек оттуда. Он в принципе не может посчитать число вызовов правильно. Если функция маленькая, и успевает выполниться несколько раз между моментами снятия состояния, её не будет видно в отчёте.

Callgrind — инструментирующий профилировщик. Он исполняет программу в виртуальной машине и тщательно отслеживает вызовы функций. Это гораздо медленнее, зато учёт более подробный.

gprof — инструментирующий профилировщик, но он изменяет программу на этапе компиляции, вставляя специальные вызовы в начала и окончания функций.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от i-rinat

gprof — инструментирующий профилировщик

Как называлась мультипоточная версия gprof? Когда 5 лет назад ровно я пробовал gprof там было серьезное ограничение что он не различает потоки.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Как называлась мультипоточная версия gprof?

Без понятия, я о такой никогда не слышал. Несколько раз у меня получалось использовать этот gprof, а потом как-то резко перестало получаться. Так и не докопался до сути проблемы, бросил.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

perf — семплирующий профилировщик

ок, стало понятно

x905 ★★★★★
() автор топика
Ответ на: Оффтоп от anonymous

А как ты настроил такой шрифт

tahoma без сглаживания
добавил в проект свой fonts.conf
смысл его что мелкие шрифты не сглаживаются, дополнительно сглаживаются принудительно вручную добавленные, в основном для браузеров

x905 ★★★★★
() автор топика
Ответ на: комментарий от Pavval

Не пользовался никогда. Но интернет пишет, что он по-разному умеет, и семплировать, и инструментировать. Похоже, на ходу программу патчит.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Ну точно не компилирует, иначе старт был бы не мгновенный. Но штука классная.

Pavval ★★★★★
()
Ответ на: комментарий от i-rinat

gprof — инструментирующий профилировщик

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

annulen ★★★★★
()
Ответ на: комментарий от annulen

Но он же вставляет в каждую функцию вызов mcount(). Где-то даже заявлялось, что этой функцией и происходит подсчёт числа вызовов.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Да, количество вызовов он наверное считает

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.