przejście do zawartości
zpr c++ quick reference
Narzędzia użytkownika
Zarejestruj się!
Zaloguj
Narzędzia witryny
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
Zarejestruj się!
Ostatnie zmiany
Menadżer multimediów
Indeks
Ślad:
timer
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Biblioteka Boost::Timer ====== **Łukasz Dobrodziej T-TIZ** ===== Wstęp ===== Biblioteka Timer zapewnia trzy klasy, które umożliwiają kontrolę czasu - klasę ''timer'' do mierzenia czasu, który upłynął od danego momentu, klasę ''progress_timer'' do raportowania czasu oraz klasę ''progress_display'' do wyświetlania wskaźnika postępu. Klasy są wyposażone w obsługę wyjątków np. konstruktory mogą rzucić std::bad_alloc. W praktyce rzucanie wyjątków przez obiekty tych klas jest mało prawdopodobne. ===== Klasa timer ===== Umożliwia mierzenie czasu. Jej implementacja oferuje umiarkowaną przenośność zależną od nieznanej dokładności i precyzji funkcji clock() z biblioteki standardowej języka C. Maksymalny czas jaki pozwala zmierzyć wynosi nie więcej niż 596.5 godzin. Ze względu na te ograniczenia klasa timer nie jest uznana za silną i nie powinna być używana w programach, w których jej ograniczenia mogłoby się okazać krytyczne. Klasa udostępnia cztery metody: * **''elapsed()''** zwraca czas w sekundach, który upłynął od chwili utworzenia obiektu klasy timer bądź jego zrestartowania. * **''restart()''** zeruje timer. * **''elapsed_min()''** zwraca minimalną wartość jaką może wskazać funkcja elapsed(). * **''elapsed_max()''** zwraca oszacowaną wartość maksymalną dla funkcji elapsed(), wartość ta może być przekłamana na niektórych platformach z powodu problemów z std::clock_t. Przykład użycia: <code cpp> boost::timer t; // uruchomienie zegara (rozpoczecie odmierzania czasu) for (int i=0; i<10000000; ++i) std::rand(); std::cout << t.elapsed() << std::endl; //wyswietlenie aktualnej wartosci timeru </code> ===== Klasa progress_timer ===== Automatycznie mierzy upływający czas a następnie w czasie destrukcji wyświetla informacje o zmierzonym czasie w odpowiednim miejscu i formie. W implementacji jako miejsce wyświetlania domyślnie ustawiony jest strumień std::cout. Klasa progress_time jest najczęściej używana do mierzenia czasu wykonania programu. Przykład użycia: <code cpp> int main() { progress_timer t; // uruchomienie zegara // cos się wykonuje ... return 0; //program się konczy, na standardowym wyjsciu wyswietlany jest czas wykonania programu w nastepujacej formie ”1.45 s” } </code> ===== Klasa progress_display ===== Wyświetla wskaźnik postępu do zdefiniowanego celu w odpowiedniej formie i miejscu. Pozwala to na powiadomienie użytkownika, że program działa i w jakim jest stanie. Klasa może być wykorzystana, gdy na przykład chcemy wykonać skomplikowane obliczenia na dużym kontenerze danych. Przykład użycia: <code cpp> progress_display show_progress( big_map.size() ); //inicjalizacja obiektu, zdefiniowanie wartości docelowej for ( big_map_t::iterator itr = big_map:begin(); itr != big_map.end(); ++itr ) { // wykonywanie jakichs obliczen ... ++show_progress; //wyswietlanie postepu na standardowym wyjsciu } </code> Gdy np. 70% elementów kontenera zostanie przeliczonych zobaczymy następujący obrazek: <code> 0% 10 20 30 40 50 60 70 80 90 100% |----|----|----|----|----|----|----|----|----|----| ************************************ </code>
timer.1240078806.txt.gz
· ostatnio zmienione: 2009/04/18 20:20 przez
lucas
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Do góry