Мне нужна помощь в профилировании существующего кода с точки зрения времени выполнения. Цель состоит в том, чтобы ускорить его.
Мне дали код, над которым работали ранее. Он полностью написан на 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 и т. д.)
Может ли кто-нибудь посоветовать новичку?