Czasu mam kilka rzeczy, których nie mogę po prostu umieścić w długiej pętli. I potrzebuję czasu, aby je zobaczyć, ile czasu zajmie, aby zakończyć, ale wydaje się, że timer ma dokładność 15-16 ms w java? Jak mogę to obejść?Dokładność taktowania w java
Odpowiedz
Czy próbowałeś używać System.nanoTime()?
Z Javadoc:
Zwraca bieżącą wartość najdokładniejszym zegarem systemowym dostępnych w nanosekund.
Ta metoda może być używana tylko do mierzenia czasu, który upłynął i nie jest związana z żadnym innym pojęciem czasu systemowego ani zegara ściennego. Zwrócona wartość reprezentuje nanosekundy od pewnego ustalonego, ale arbitralnego czasu (być może w przyszłości, więc wartości mogą być ujemne). Ta metoda zapewnia nanosekundową dokładność, ale niekoniecznie dokładność rzędu nanosekund. Nie ma gwarancji, jak często zmieniają się wartości. Różnice w kolejnych połączeniach, które trwają dłużej niż około 292 lata (2 nanosekund), nie dokładnie obliczy czas, który upłynął z powodu przekroczenia wartości liczbowej.
Na przykład, aby zmierzyć, jak długo trwa jakiś kod do wykonania:
długiej startTime = System.nanoTime(); // ... mierzony kod ... long estimatedTime = System.nanoTime() - startTime;
Clocks and Timers - General Overview
Java Programowanie API zegarów i liczniki Bezwzględna zegar "time-of-day" jest reprezentowana przez sposób System.currentTimeMillis() która zwraca milisekundę reprezentacja czasu na ścianie w milisekund od epoki. Jako taki wykorzystuje system operacyjny "czas dnia" zegar. Rozdzielczość aktualizacji tego zegara jest często taka sama, jak przerwanie timera (np. 10 ms), ale w przypadku niektóre systemy są stałe, niezależnie od współczynnika przerwania.
zegara względem czasu jest reprezentowana przez metodą System.nanoTime(), która zwraca „sypki” czas w nanosekund. Ten czas jest przydatny tylko dla porównania wartości innych nanoTime . Metoda nanoTime używa zegara o największej rozdzielczości dostępnej na platformie, a podczas gdy jego zwrotna wartość wynosi , rozdzielczość aktualizacji wynosi zwykle tylko mikrosekund. Jednak w niektórych systemach nie ma wyboru, ale do korzystania z tego samego źródła zegara jak currentTimeMillis() - na szczęście to jest rzadkie i dotyczy głównie starych systemów Linux i Windows 98.
- 1. Zrozumienie wartości taktowania z Charles debugowania pełnomocnika
- 2. Dokładność zadania.Delay
- 3. Dokładność NSTimer
- 4. Jedność: Input.gyro.attitude Dokładność
- 5. Dokładność zmiennoprzecinkowa ponownie
- 6. jak poprawić dokładność homografii?
- 7. Dokładność snu nici
- 8. Linux, dokładność timfd
- 9. Matlab tic toc dokładność
- 10. Dokładność elewacji CLLocation
- 11. GCC C++ pow dokładność
- 12. Dokładność LibSVM maleje
- 13. poprawić dokładność GPS Android
- 14. Dokładność synchronizacji czasu Java w systemie Windows XP i Windows 7
- 15. Co dokładnie oznacza "dokładność" w geolokalizacji HTML5?
- 16. Google dokładność bieżącego miejsca w iOS
- 17. EF pobiera niepoprawną dokładność dziesiętną
- 18. Co to jest dokładność pozioma
- 19. Jak dokładna jest dokładność CLLocation?
- 20. Klucz WPF Dokładność czasu odpowiedzi
- 21. Priorytet wątku i Dokładność gwintu
- 22. Szybszy algorytm matematyczny poświęcający dokładność
- 23. Dokładność GPU do obliczeń naukowych
- 24. Funkcje skorelowane i dokładność klasyfikacji
- 25. Dokładność kodu kreskowego kontra qrcode?
- 26. Geokodowanie - wymagana dokładność we współrzędnych GPS?
- 27. UIGestureRecognizers vs touchesBegan/touchesPotrafienia/dotknięciaUruchomione (dokładność)
- 28. komenda linux czas mikrosekundy lub lepsza dokładność
- 29. Struktura obiektu utrata Sql Dokładność DateTime
- 30. Dokładność lokalizacji Google Analytics dla Androida
heh, ja Uwielbiam to zdanie: "Różnice w kolejnych połączeniach, które trwają dłużej niż około 292 lata (263 nanosekundy), nie dokładnie obliczyć upływający czas z powodu przepełnienia liczbowego." Powinien istnieć konkurs na najdłużej działający program bez przerwy/awarii. –