Mjerenje brzine izvođenja C++ aplikacija
Pamćenjem vrijednosti vremena zidnog sata prije početka i nakon završetka izvođenja (dijela) koda možemo izmjeriti brzinu izvođenja. To ćemo izvesti korištenjem biblioteke chrono
koja je dio standarda C++11 (std::chrono na cppreference.com).
#include <chrono>
#include <iostream>
int main()
{
auto start = std::chrono::steady_clock::now();
// kod čije vrijeme izvođenja mjerimo dolazi ovdje
auto end = std::chrono::steady_clock::now();
std::chrono::duration<double> elapsed_seconds = end - start;
std::cout << "elapsed time: " << elapsed_seconds.count() << "s\n";
}
Umjesto std::cout
za ispis možemo koristiti i biblioteku {fmt} na način:
#include <fmt/format.h>
#include <chrono>
int main()
{
auto start = std::chrono::steady_clock::now();
// kod čije vrijeme izvođenja mjerimo dolazi ovdje
auto end = std::chrono::steady_clock::now();
std::chrono::duration<double> elapsed_seconds = end - start;
fmt::print("elapsed time: {}s\n", elapsed_seconds.count());
}
Biblioteka {fmt} od verzije 6.0.0 nadalje može oblikovati trajanje vremena u odgovarajućim vremenskim jedinicama (u ovom slučaju sekundama) pa je nepotrebno pozivati metodu count()
i ručno navoditi jedinice. Kako bi biblioteka {fmt} oblikovala vrijeme u odgovarajućim jedinicama, dovoljno je uključiti zaglavlje fmt/chrono.h
i izravno koristiti vrijednost tipa std::chrono::duration<>
(std::chrono::duration na cppreference.com):
#include <fmt/format.h>
#include <chrono>
int main()
{
auto start = std::chrono::steady_clock::now();
// kod čije vrijeme izvođenja mjerimo dolazi ovdje
auto end = std::chrono::steady_clock::now();
std::chrono::duration<double> elapsed_seconds = end - start;
fmt::print("elapsed time: {}\n", elapsed_seconds);
}
Author: Vedran Miletić