C++ измерение времени работы функции
Является ли хорошей идеей измерять время затраченное на работу функции используя 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();
};
Твоя идея нормальная, но такой код, который я тебе скинул обычно юзают через класс. Вот реализация код с хабра про мув конструкторы.