Вимірювання часу виконання функцій у C++ за допомогою класу Timer

C++ | Поради

pic

вступ

У C++ вимірювання часу виконання функцій є важливою частиною відлагодження та оптимізації продуктивності коду. У цьому посібнику ми розглянемо, як створити клас Timer для вимірювання тривалості викликів функцій у мілісекундах.

Опис класу Timer

Клас Timer використовує бібліотеку std::chrono, яка надає високоточні годинники для точних вимірів часу. Основні компоненти:

#include   
#include   
#include   

struct Timer {  
 std::chrono::time_point start, end;  
 std::chrono::duration duration;  

 Timer() {  
 start = std::chrono::high_resolution_clock::now();  
 }  

 ~Timer() {  
 end = std::chrono::high_resolution_clock::now();  
 duration = end - start;  
 float ms = duration.count() * 1000.0f;  
 std::cout << "Час виконання: " << ms << "ms" << std::endl;  
 }  
};

Як це працює:

  1. Конструктор Timer ініціалізує початковий час за допомогою std::chrono::high_resolution_clock::now().
  2. Деструктор обчислює витрачений час, коли об'єкт виходить із області видимості.
  3. Тривалість виводиться в мілісекундах.

Вимірювання часу виконання функції

Ви можете виміряти час виконання будь-якої функції, створивши об'єкт Timer на початку функції:

void Sleep() {  
 Timer timer;  
 using namespace std::literals::chrono_literals;  
 std::this_thread::sleep_for(1s);  
}  

void Count() {  
 Timer timer;  
 for (int i = 0; i < 10; ++i)  
 std::cout << "Число: " << i << std::endl;  
}  

int main() {  
 Sleep();  
 Count();  
 return 0;  
}

Пояснення:

  1. Функція Sleep вимірює час, який витрачається на паузу програми на одну секунду.
  2. Функція Count вимірює час, витрачений на виведення чисел від 0 до 9.

Чому використовувати клас Timer?

  • Відлагодження: Допомагає виявляти проблеми з продуктивністю.
  • Оптимізація: Корисний при порівнянні різних реалізацій однієї й тієї ж логіки.
  • Простота: Клас Timer автоматично обчислює час без необхідності вручну писати код.

YouTube відео

Висновок

Використання класу Timer — це простий і ефективний спосіб виміряти час виконання функцій у C++. Він може бути особливо корисним під час відлагодження та оптимізації продуктивності.

Перекладено з: Measuring Function Execution Time in C++ with a Timer Class

Leave a Reply

Your email address will not be published. Required fields are marked *