Как профилировать многопоточное приложение C ++ в Linux?

for ii in range(200):
    for jj in range(200, 400):
        ...block0...
        if something:
            break
    else:
        ...block1...

Break разрушит внутренний цикл, а block1 не будет выполнен (он будет работать только в том случае, если внутренний цикл завершен нормально).

43
задан True Soft 16 June 2010 в 15:40
поделиться

4 ответа

Edit: добавлен еще один ответ о профилировщике бедного человека, который, IMHO, лучше для многопоточных приложений.

Взгляните на oprofile. Накладные расходы на профилирование этого инструмента незначительны, и он поддерживает многопоточные приложения - до тех пор, пока вы не хотите профилировать борьбу мьютексов (что является очень важной частью профилирования многопоточных приложений)

.
13
ответ дан 26 November 2019 в 20:41
поделиться

Взгляните на Valgrind .

6
ответ дан 26 November 2019 в 20:41
поделиться

Взгляните на Zoom .

6
ответ дан 26 November 2019 в 20:41
поделиться

Некий Пол Р. сказал, взгляните на Zoom. Вы также можете использовать lsstack , который является нетехнологичным, но удивительно эффективным по сравнению с gprof .

Добавлено: поскольку вы пояснили, что используете OpenGL на 33 мс, моя предыдущая рекомендация остается в силе. Кроме того, то, что я лично делал в подобных ситуациях, одновременно эффективно и не интуитивно понятно. Просто запустите его с типичной или проблемной рабочей нагрузкой, остановите его вручную и посмотрите, что он делает и почему. Сделайте это несколько раз. Теперь, если он изредка плохо себя ведет, вы хотели бы остановить его только тогда, когда он плохо себя ведет. Это непросто, но я использовал прерывание от будильника для правильной задержки. Например, если один кадр из 100 занимает более 33 мс, в начале кадра установите таймер на 35 мс, а в конце кадра выключите его. Таким образом, он будет прерываться только тогда, когда код занимает слишком много времени, и покажет вам, почему. Конечно, один образец может пропустить виновный код, но 20 образцов его не пропустят.

6
ответ дан 26 November 2019 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: