Я определяю некоторые вещи, которые я не могу просто положить в длинный цикл. И мне нужно время, чтобы посмотреть, как долго они завершатся, но похоже, что таймер имеет точность в 15-16 мс в java? Как я могу обойти это?Точность таймера в java
ответ
Вы пытались использовать System.nanoTime()?
Из Javadoc:
Возвращает текущее значение наиболее точного доступного системного таймера, в наносекунд.
Этот метод может использоваться только для измерения прошедшего времени и не имеет отношения к какому-либо другому понятию системного или настенного времени. Возвращаемое значение представляет собой наносекунды с некоторого фиксированного, но произвольного времени (возможно, в будущем, поэтому значения могут быть отрицательными). Этот метод обеспечивает наносекундную точность, но не обязательно наносекундную точность. Никаких гарантий относительно того, как часто меняются ценности, не делается. Различия в последовательных вызовах, которые охватывают более примерно 292 лет (2 наносекунд), не будут точно вычислять прошедшее время из-за численного переполнения.
Например, чтобы определить, сколько времени некоторый код принимает выполнить:
длинный STARTTIME = System.nanoTime(); // ... измеряемый код ... Долгое времяTime = System.nanoTime() - startTime;
Clocks and Timers - General Overview
Java Программирование API для Часов и таймеров Абсолютные часов "времени-дня" представлен метода System.currentTimeMillis(), которая возвращает миллисекунду представление настенных часов в миллисекунд с эпохи. Как таковой , он использует часы операционной системы « дня». Разрешение обновления этих часов часто совпадает с прерыванием таймера (например, 10 мс), но на некоторые системы фиксированы независимо от скорости прерывания.
Относительного-часы реального времени представлены по методе System.nanoTime(), который возвращает «свободный ход» время в наносекундах. Это время полезно только для сравнения с другими значениями nanoTime . Метод nanoTime использует часы с самым высоким разрешением, доступные на платформе , а при его возврате значение в наносекундах, обновление Разрешение обычно составляет только микросекунд. Однако, на некоторых системах нет выбора, кроме как использовать один и тот же источник часов, как для currentTimeMillis() - к счастью, эта встречается редко и в основном затрагивает старые системы Linux, и Windows 98.
- 1. Точность таймера OpenVMS, лучше, чем миллисекундная точность.
- 2. Какова максимальная точность таймера в .NET?
- 3. Как улучшить точность таймера Arduino Due?
- 4. Повторное использование таймера таймера Java
- 5. Поддержание таймера в java
- 6. Выполнение таймера в java
- 7. Создание таймера в java
- 8. Высокая точность таймера в C# для синхронизации объектов тайм-аут
- 9. единственная десятичная точность в java
- 10. Точность номера строки Java
- 11. Увеличение скорости таймера в Java
- 12. Использование таймера качания в java
- 13. Отмена таймера в BlackBerry - Java
- 14. Использование таймера Java в викторине
- 15. Использование таймера java в JFrame
- 16. Выход из таймера в Java
- 17. Необходимые события для выполнения событий таймера, точность метронома
- 18. Точность таймера при использовании getTimer() - время запуска после нажатия кнопки
- 19. - C++ - исключение запуска с потоком таймера, точность ms
- 20. точность таймера: c clock() против QPC WinAPI или timeGetTime()
- 21. java скрипт проблема таймера
- 22. Отложенное расписание таймера java
- 23. Использование таймера java
- 24. Java два таймера
- 25. Ошибка таймера Java
- 26. Остановка таймера Java
- 27. Задача таймера Java
- 28. java: Простое использование таймера
- 29. Неожиданные ошибки таймера Java
- 30. Печать различных переменных с использованием таймера и таймера в java
хех, я любите это предложение: «Различия в последовательных вызовах, которые охватывают более 292 лет (263 наносекунды), не будут точно вычислять прошедшее время из-за численного переполнения». Должен быть конкурс на самую длинную программу без прерывания/сбоя. –