Профилирование проекта C++ с точки зрения времени выполнения

Мне нужна помощь в профилировании существующего кода с точки зрения времени выполнения. Цель состоит в том, чтобы ускорить его.

Мне дали код, над которым работали ранее. Он полностью написан на C++ с использованием объектно-ориентированных концепций. У него есть интерфейс на основе графического интерфейса, и выбор определенного параметра запускает выбранный фрагмент кода. (В рамках проекта около 11 занятий).

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

Functions of Class 1 = 20% of execution time
Functions of Class 2 = 60% of execution time
Functions of Class 3 = 10% of execution time
Functions of Class 4 = 10% of execution time

Таким образом, я знаю, какой класс занимает больше всего времени, а затем знаю, над чем работать и что улучшать. . Однако я понятия не имею, как это сделать. У меня есть только базовые знания C++.

Я прочитал этот пост: найти время выполнения c++, однако, поскольку программа не является последовательной. Один класс вызывает другой, а тот вызывает другой, я не знаю, как можно реализовать системные часы/такты?

Я читал о таких программах, как Valgrind, Zoom, Poor Man's Profiler и т. д., но, честно говоря, понятия не имею, как интегрировать их в код. Есть ли более простой способ?

Я также читал этот метод: Как я могу профилировать код C++, работающий в Linux?, однако я не понимаю, как я могу получить точную информацию относительно информации на основе классов (класс 1, класс 2 и т. д.)

Может ли кто-нибудь посоветовать новичку?

17
задан Community 23 May 2017 в 10:31
поделиться