C++ измерение времени работы функции

Рейтинг: 0Ответов: 1Опубликовано: 03.04.2023

Является ли хорошей идеей измерять время затраченное на работу функции используя std::chrono? В данный момент пишу игровой движок и частенько прибегаю к литературе на эту тему. В одной из книг заметил, что человек рекомендует и одновременно НЕ рекомендует использовать std::chrono для измерения времени затраченного функцией. К сожалению, на вопрос "почему не рекомендует" - ответа так и не дал. Потому я решил обратиться на данный форум.

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

#define DURATION(a) std::chrono::duration_cast<std::chrono::nanoseconds>(a).count()
#define TIME_NOW() std::chrono::high_resolution_clock::now()

Ответы

▲ 1
class LogDuration {
public:
    LogDuration(std::string id)
        : id_(std::move(id)) {
    }

    ~LogDuration() {
        const auto end_time = std::chrono::steady_clock::now();
        const auto dur = end_time - start_time_;
        std::cout << id_ << ": ";
        std::cout << "operation time"
                  << ": " << std::chrono::duration_cast<std::chrono::milliseconds>(dur).count()
                  << " ms" << std::endl;
    }

private:
    const std::string id_;
    const std::chrono::steady_clock::time_point start_time_ = std::chrono::steady_clock::now();
};

Твоя идея нормальная, но такой код, который я тебе скинул обычно юзают через класс. Вот реализация код с хабра про мув конструкторы.