Как посмотреть сколько времени занимает выполнение каждой функции программы (C++)?

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

1. Использование библиотеки "chrono":
Библиотека "chrono" включает в себя классы и функции для работы с временем. В частности, класс "std::chrono::high_resolution_clock" позволяет измерять точное время выполнения функций. Пример кода, показывающего время выполнения функции, может выглядеть следующим образом:

#include <iostream>
#include <chrono>

void MyFunction()
{
    // Начало измерения времени
    auto start = std::chrono::high_resolution_clock::now();

    // Код функции

    // Конец измерения времени
    auto end = std::chrono::high_resolution_clock::now();

    // Вычисление и вывод времени выполнения
    std::chrono::duration<double> duration = end - start;
    std::cout << "Время выполнения MyFunction: " << duration.count() << " сек.n";
}

int main()
{
    MyFunction();
    return 0;
}

2. Использование макросов:
Другой способ состоит в определении макроса, который будет автоматически измерять время выполнения функции. Например:

#include <iostream>
#include <chrono>

#define MEASURE_TIME(func) 
{ 
    const auto start = std::chrono::high_resolution_clock::now(); 
    func(); 
    const auto end = std::chrono::high_resolution_clock::now(); 
    const std::chrono::duration<double> duration = end - start; 
    std::cout << "Время выполнения " << #func << ": " << duration.count() << " сек.n"; 
}

void MyFunction1()
{
    // Код функции
}

void MyFunction2()
{
    // Код функции
}

int main()
{
    MEASURE_TIME(MyFunction1);
    MEASURE_TIME(MyFunction2);
    return 0;
}

3. Использование инструментов профилирования:
Существуют специальные инструменты профилирования, такие как "gperftools" или "Valgrind", которые позволяют более подробно и точно измерять время выполнения функций в C++.

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