Использование профилировщиков и как использовать результаты - PullRequest
0 голосов
/ 27 января 2019

У меня есть код C ++, и я хочу его профилировать.Я использую профилировщик Visual Studio 2017Но как интерпретировать результаты «Total CPU» и «Self CPU»?У меня есть функция с довольно высоким «Self CPU».Также значение «Self CPU» равно «Total CPU» для этой функции.Что это значит?Каковы будут следующие шаги, чтобы найти узкие места производительности в конкретной функции?

1 Ответ

0 голосов
/ 27 января 2019

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

Предположим, у вас есть функция f(), которая вызывает 2 другие функции g() и h().

void f(){
   ...
   g();
   h();
   ...
}

У вас будет total-CPU(f)=self-CPU(f)+total-CPU(g)+total-CPU(h) (если g и h не используются в других местах программы).

А если в f нет вызова функции, total-CPU(f)=self-CPU(f)

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

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