Пробный прогон Увеличение . Вы не будете разочарованы.
P.S. Не ожидайте, что инструменты сделают работу. Для информации либо на уровне линии, либо на уровне функции, стековый пробоотборник доставляет товары, предполагая, что вам абсолютно не нужны точные подсчеты вызовов (которые имеют мало отношения к производительности).
ДОБАВЛЕНО: Я в Windows, поэтому я просто запустил ваш код с LTProf . Вывод выглядит так:
void foo(){
5 func1();
if(qqq){
5 func2();
}
5 func3();
5 func4();
// I made this 16, not 60, so the total time would be 20 sec.
for(int i = 0; i < 16; i++){
80 func5();
}
}
, где каждый func()
делает Sleep(1000)
, а qqq
- True, поэтому все это работает в течение 20 секунд. Цифры слева - это процент выборок (6667 образцов), на которых есть эта линия. Так, например, один вызов одной из функций func
использует 1 секунду или 5% от общего времени. Таким образом, вы можете видеть, что строка, где вызывается func5()
, использует 80% общего времени. (То есть 16 из 20 секунд.) Все остальные строки были в стеке настолько малы, что их проценты равны нулю.
Я бы представил информацию по-другому, но это должно дать представление о том, что может сказать вам выборка из стека.