Mikrosekundy C ++

Mikrosekundy C ++
Aby uzyskać dokładny czas wykonywania w programie C ++, język programowania C ++ zapewnia kilka opcji. Możesz napisać niestandardowy kod, aby uzyskać dokładny czas wykonywania, lub możesz skorzystać z wbudowanej funkcji oszczędzającej czas i energię. Wbudowana funkcja dostarczana przez język programowania C ++ pomaga programistowi wdrażać złożone procesy za pomocą tylko jednej funkcji. W tym artykule nauczymy się uzyskać dokładny i precyzyjny czas wykonywania w mikrosekundach za pomocą wbudowanych funkcji C ++. Istnieją różne sposoby znalezienia czasu wykonania w mikrosekundach.

Obliczanie czasu wykonywania programu C ++ w mikrosekundach

Niestety nie ma metod ustalania dokładnego czasu wykonania, który działa dla wszystkich. W tym celu musisz wybrać rozwiązanie zgodnie z sytuacją. Mierzenie dokładnego czasu wykonywania programu C ++ może być trudne w niektórych sytuacjach z powodu problemów z przenośnością. Wybór odpowiednich metod pasujących do systemu operacyjnego i wersji kompilatora jest niezbędne, aby uzyskać dokładny czas. Co ważniejsze, musisz zrozumieć, co dokładnie masz na myśli przez „czas”, abyś mógł odpowiednio wybrać metodę.

Tutaj znajdziesz kompleksową listę niektórych łatwych, prostych i najlepszych dostępnych opcji, aby znaleźć czas wykonania programu C ++. Wymieścimy również ograniczenia funkcji, aby podać Heads-Up, zanim zaczniesz korzystać z tej funkcji w programie.

Mamy nadzieję, że otrzymasz najlepszą opcję idealnie odpowiednia dla systemu operacyjnego i wersji kompilatora.

Przykład 1:

Zbadamy czas na ścianę z funkcją. Funkcja jest jednym z najbardziej przenośnych sposobów znalezienia czasu ściany w programie C ++. Działa tylko z wersjami C ++ 11 i nowszymi. Jeśli masz starszą wersję, uaktualnij kompilator przed użyciem tej funkcji. Ma dostęp do różnych rodzajów zegarów w maszynie o różnych cechach i celach.

Tutaj używamy high_resolution_clock, aby znaleźć czas ściany, ponieważ wykorzystuje on najwyższy dostępny zegar, który jest prawdopodobnie odpowiedni dla większości systemów. Patrz kod podany poniżej:

#włączać
#włączać
int main ()
podwójne s = 0, a = 1;
auto start = std :: chrono :: high_resolution_clock :: now ();
int it = 1000*1000*1000;
dla (int i = 0; is += a;
A /= 2.0;

auto end = std :: chrono :: high_resolution_clock :: now ();
Auto Elapsed = std :: chrono :: czas trwania (end - start);
printf („Zegar zaczyna się w = %.2f \ n ”, s);
printf („zmierzony czas wynosi = %.3f sekundy.\ n ”, upłynął.count () * 1e-6);
powrót 0;

Program rozpoczyna się od dwóch plików nagłówka stdio.H i Chrono. Stdio.Biblioteka H jest używana w połączeniu ze standardowymi metodami wejściowymi i wyjściowymi. Biblioteka Chrono pozwala korzystać z funkcji w programie. Cały program jest napisany w głównej funkcji, w której odbywa się cała realizacja.

Główny program rozpoczyna się od inicjowania dwóch zmiennych „S” i „A”, które będą używane do śledzenia czasu. Zmienna „start” jest inicjowana z bieżącym czasem z funkcją „chrono :: high_reolution_clock :: now ()”.

Zmienna „IT = 1000*1000*1000” jest inicjowana z liczbą iteracji, które należy wykonać i oblicza upływający czas w mikrosekundach. Następujące działanie zostanie przeprowadzone przez pętlę „dla”, ponieważ itera od 0 do 1000*1000*1000 razy.

Kolejna zmienna „koniec” jest inicjowana z bieżącym czasem sprawdzenia upływu czasu. Po obliczeniu „End - uruchom”, otrzymasz upływający czas wykonania. „Chrono :: Microsekunds” zapewni czas wykonania w mikrosekundach, które zostaną przekonwertowane na sekundy z „upływem”.Count ()*1E-6 'obliczenia. Instrukcje printf () wydrukują czas rozpoczęcia i upłynął czas. I wreszcie instrukcja zwrotu 0 zapewnia pomyślne wykonanie programu.

Po uruchomieniu kompletnego kodu podobne wyjście zostanie wyprodukowane w zależności od prędkości wykonania i wydajności systemu:

Przykład 2:

W poniższym kodzie używamy funkcji getTimeofday (), aby znaleźć upływający czas, ponieważ czas epokowy jest „1 stycznia 1970 r., 00:00:00 UTC”. Funkcja getTimeofday () zwraca czas w mikrosekundach, jak i sekundach. Stąd, aby znaleźć dokładny czas w mikrosekundach, oba czasy należy zsumować razem. Poniżej załączony kod pomoże Ci obliczyć czas wykonywania w mikrosekundach za pomocą

#włączać
#włączać
int main ()
podwójne s = 0, a = 1;
struktur start czasowy, koniec;
getTimeOfDay (i start, 0);
int it = 1000*1000*1000;
dla (int i = 0; is += a;
A /= 2.0;

getTimeofday (& End, 0);
długi sec = koniec.TV_SEC - Rozpocznij.TV_SEC;
długi mikro = koniec.TV_USEC - Start.tv_usec;
podwójnie upłynął = Sec + Micro*1E-6;
printf („Zegar zaczyna się w = %.20f \ n ”, s);
printf („zmierzony czas wynosi = %.3f sekundy.\ n ”, upłynął);
powrót 0;

Funkcja getTimeofday () jest zawarta w pliku nagłówka.

„Struktur timalval” jest strukturą czasową używaną do reprezentowania czasu upływu czasu.

Obliczony czas w sekundach i mikrosekundach jest dodawany, aby uzyskać dokładny czas wykonywania w mikrosekundach. Funkcja „TV_Sec” zapewnia czas w sekundach, a „TV_USEC” zapewnia czas w mikrosekundach. Aby przekonwertować sekundy na mikrosekundy, pomnóż mikrosekund przez 1e-6. Następnie dodaj oba razy w sekundach i mikrosekundach, aby uzyskać dokładny czas wykonywania w mikrosekundach.

Teraz kliknij ikonę kompiluj i uruchom w pasku ikony oprogramowania Dev C ++. Naciśnij klawisz F11 na klawiaturze, aby wykonać program. Wykonane dane wyjściowe podano poniżej:

Przykład 3:

W tym przykładzie używamy funkcji biblioteki i jej czasu (). Funkcja Time () działa podobnie do funkcji getTimeofDay (), zapewniając upływający czas od czasu epoki. Mierzy jednak tylko pełne sekundy i nie można zdefiniować strefy czasowej. Stąd, jeśli zmierzone odstępy są większe niż sekunda, to funkcja czasu () ma sens. Może to nie być pierwsza preferencja, aby uzyskać mikrosekundy i zamiast tego możesz użyć innych funkcji. Zobacz kod poniżej:

#włączać
#włączać
int main ()
podwójne s = 0, a = 1;
time_t start, end;
czas (i start);
int it = 1000*1000*1000;
dla (int i = 0; is += a;
A /= 2.0;

czas (i koniec);
time_t upłynął = end - start;
printf („wynik: %.20f \ n ”, s);
printf („zmierzony czas: %LD sekund.\ n ”, upłynął);
powrót 0;

Funkcja TIME () zapewni czas rozpoczęcia i zakończenia wykonania i upływający czas można łatwo obliczyć za pomocą instrukcji „END - Start”. Zobacz wynik poniżej:

Zauważ, że upływający czas obliczony z funkcją czasu () wynosi 6s, a nie dokładne 6.833 Microsekunds. Różnica w wyniku funkcji czasu () jest widoczna w wyjściu.

Wniosek

Różne metody oblicz czas wykonywania systemu za pomocą programu C ++. Jednak żadne rozwiązanie nie jest idealne dla każdej sytuacji, a każda funkcja działa inaczej w różnych sytuacjach. Tutaj nauczyliśmy się używać czasu (), gettimeofday () i funkcji, aby uzyskać czas wykonywania w mikrosekundach.