Как сделать хорошее профилирование кода с помощью valgrind? ⇐ C++
Как сделать хорошее профилирование кода с помощью valgrind?
Я начал использовать valgrind, в частности инструмент callgrind для профилирования кода.
Для начала я создал общую библиотеку для численного интегрирования (я реализовал интерфейс абстрактного класса и несколько производных классов, которые специализируются на квадратурной формуле, например. Симпсон, Трапеция, Средняя точка). На этом этапе я тестирую библиотеку в приложении и хочу использовать callgrind для обнаружения основных узких мест и оптимизации кода.
Итак, я скомпилировал исполняемый файл в режиме отладки и анализирую поведение программы с помощью Kcachegrind.
Я прикрепил ниже основную программу: По сути, я создаю базовый класс «NUMERICAL_INTEGRATION», который шаблонизирован для каждой квадратурной формулы, а затем проверяю некоторые функции.
#include #include #include #include "Квадратура.hpp" //#include интервал основной() { /*--- МОДУЛЬ ЧИСЛЕННОГО ИНТЕГРИРОВАНИЯ --ТЕСТИРОВАНИЕ------- */ использование пространства имен Integrate_1D; NUMERICAL_INTEGRATION nIntegrationMID; NUMERICAL_INTEGRATION nIntegrationGL; NUMERICAL_INTEGRATION nIntegrationSIMPS; NUMERICAL_INTEGRATION nIntegrationTRAPZ; // Пример: Интегрирование f(x) = x: // Все формулы должны быть точными для этой функции: auto ToIntegrate0 = [](двойной x) { вернуть х; }; двойной xSTART = 0,0; двойной xEND = 2,0; двойной EXACT_RES0 = 2,0; беззнаковое целое число N0; std::vector градусов0; std::vector error0_(3,std::vector(4)); std::cout
Я начал использовать valgrind, в частности инструмент callgrind для профилирования кода.
Для начала я создал общую библиотеку для численного интегрирования (я реализовал интерфейс абстрактного класса и несколько производных классов, которые специализируются на квадратурной формуле, например. Симпсон, Трапеция, Средняя точка). На этом этапе я тестирую библиотеку в приложении и хочу использовать callgrind для обнаружения основных узких мест и оптимизации кода.
Итак, я скомпилировал исполняемый файл в режиме отладки и анализирую поведение программы с помощью Kcachegrind.
Я прикрепил ниже основную программу: По сути, я создаю базовый класс «NUMERICAL_INTEGRATION», который шаблонизирован для каждой квадратурной формулы, а затем проверяю некоторые функции.
#include #include #include #include "Квадратура.hpp" //#include интервал основной() { /*--- МОДУЛЬ ЧИСЛЕННОГО ИНТЕГРИРОВАНИЯ --ТЕСТИРОВАНИЕ------- */ использование пространства имен Integrate_1D; NUMERICAL_INTEGRATION nIntegrationMID; NUMERICAL_INTEGRATION nIntegrationGL; NUMERICAL_INTEGRATION nIntegrationSIMPS; NUMERICAL_INTEGRATION nIntegrationTRAPZ; // Пример: Интегрирование f(x) = x: // Все формулы должны быть точными для этой функции: auto ToIntegrate0 = [](двойной x) { вернуть х; }; двойной xSTART = 0,0; двойной xEND = 2,0; двойной EXACT_RES0 = 2,0; беззнаковое целое число N0; std::vector градусов0; std::vector error0_(3,std::vector(4)); std::cout
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение