Тема 26. Вимірювання часу виконання (таймінг) коду.pdf

Full Transcript

Тема 26. Вимірювання часу виконання (таймінг) коду Іноді, в процесі написання коду, ви можете зіткнутися з ситуаціями, коли не будете певні, яка з двох функцій виявиться ефективнішою (припускається, що кінцевий результат у обох функцій однаковий). Як це визначити? Один з найпростіших способів — засі...

Тема 26. Вимірювання часу виконання (таймінг) коду Іноді, в процесі написання коду, ви можете зіткнутися з ситуаціями, коли не будете певні, яка з двох функцій виявиться ефективнішою (припускається, що кінцевий результат у обох функцій однаковий). Як це визначити? Один з найпростіших способів — засікти час виконання кожного з фрагментів коду. У C++11 це робиться через бібліотеку chrono. Ми можемо легко інкапсулювати весь необхідний нам функціонал в клас, який потім будемо використовувати в наших власних програмах. #include // для функцій з std::chrono class Timer { private: // Псевдоніми типів використовуються для зручного доступу до вкладених типів using clock_t = std::chrono::high_resolution_clock; using second_t = std::chrono::duration; std::chrono::time_point m_beg; public: Timer() : m_beg(clock_t::now()) { } void reset() { m_beg = clock_t::now(); } double elapsed() const { return std::chrono::duration_cast(clock_t::now() - m_beg).count(); } }; Для його використання потрібно визначити об’єкт класу Timer у верхній частині функції main() (або звідки ви хочете починати відлік), а потім просто викликати метод elapsed() після частини коду, яку ви перевіряєте: int main() { Timer t; // Тут знаходиться код, до якого застосовується таймінг std::cout

Use Quizgecko on...
Browser
Browser