Mam za zadanie policzyć czas wykonywania algorytmu. Powiedziano nam by uzyc funkcji GetCurrentTime zdefinowanej w nagłówku windows. Nie moge znaleźć na google jak ją zainicjować, jaki ma argumenty. Pewnie będzie ją trzeba wyzerować. Np. kod:
…
zerowanie czasu systemowego
{
tresc algorytmu
}
a=GetCurrentTime;
wypisz a
Prosze o pomoc co wpisać przed i po klamrach. Może a powinno byc tablicą?
Jak nie znam argumentów funkcji, bo nie moge jej znaleźć to trudno żebym wiedział dokładnie co z nią zrobić, do czego ją przypisać itp. To nie program na zaliczenie, tylko gostek nam kazał potestować czas wykonywania różnych algorytmów. Jak sie on przzedstawia dla silni przy różnych jej argumentach.
Testowania prędkości w ten sposób nie zrobisz dobrze. Ale mniejsza o to. Przypuszczam, że chodziło mu o timeGetTime a nie GetCurrentTime. Ta funkcja ma najwyższą rozdzielczość wyniku (zaraz po rdtsc, które się do testowania używa).
Możesz zawsze odpalić algorytm wielokrotnie, tak by zajmował wiele czasu. Wtedy użyj funkcji z time.h - implementacja będzie dzięki temu przenośna, a jednocześnie nie będzie wymagać precyzji by dawać wartościowe wyniki.
Przecież pisałem, że timeGetTime ma najwyższą rozdzielczość w systemie. clock() nie jest w stanie zmierzyć tak niewielkich odstępów czasu. Rozdzielczość clock to kilkadziesiąt - kilkaset milisekund. timeGetTime() pozwala na uzyskanie dokładności niemalże co do milisekundy. Problem w tym, że Twój kod wykona się jeszcze szybciej. 1GHz procesor wykonuje 1 miliard operacji na sekundę. Mnożenie to około 4 cykli zegarowych. Przy wartości zmiennej a rzędu ćwierć miliona pętla wykona się w nieco ponad 1 milisekundę. Jeśli masz szybszy procesor musisz to dodatkowo przemnożyć. Jeśli chcesz zmierzyć czas wykonywania czegoś tak trywialnego, powinieneś to wykonać kilkadziesiąt tysięcy razy i zmierzyć czas od pierwszego do ostatniego wykonania.
No ok ale może dasz mi chociaz linijke kodu - do jakiego typu zmiennej przypisać ta funkcję RDTSC przed i po pętli i w jakim nagłówku jest ona zdefiniowana?