Насколько точен System.currentTimeMillis на winxp с другим языком, кроме Java? - PullRequest
1 голос
/ 22 октября 2011

Из этого вопроса System.currentTimeMillis () не точен в Windows XP? Я знаю, что в Windows XP интервал времени составляет 15 мс или 16 мс с Java.

Но так ли этотолько проблема Java?Если я использую C / C ++ / Python, могу ли я получить более точный интервал времени в Windows XP?

Ответы [ 4 ]

2 голосов
/ 22 октября 2011

Это не имеет ничего общего с языком!

Это связано с тем, как реализована используемая вами функция ... что опять-таки связано с API, доступными в ОС (другая функция APIможет иметь разную точность) вы используете И на оборудовании, на котором работаете (разные ЦП / чипсет могут предоставлять разные способы и разную точность) ...

2 голосов
/ 22 октября 2011

Вероятно, это проблема операционной системы, поэтому она будет одинаковой для любого языка, взаимодействующего с ядром операционной системы таким же образом.

Я не знаю Windows (никогда не использовал ее), но в Linuxсистем, это зависит от ядра и параметров конфигурации, таких как CONFIG_HIGH_RES_TIMERS и др.

Слухи говорят, что Windows гораздо беднее в этих вопросах, чем Linux.

Возможно, вы могли бы попробовать GNU / Linux?Это всегда интересный опыт, и самое главное, это бесплатное программное обеспечение , и это означает, что вы можете изучить это и улучшить это.В прошлый раз, когда я проверял, у Windows нет этого свойства (и поэтому я его не использую).

2 голосов
/ 22 октября 2011

Большинство функций времени страдают от этой проблемы, независимо от языка. Это включает в себя GetTickCount и функции, которые дают вам текущее время.

Можно уменьшить этот интервал до 1 мс, используя timeBeginPeriod, но это имеет глобальный эффект и может увеличить энергопотребление. Поэтому следует избегать, где это возможно.

Существует QueryPerformanceCounter API, который поддерживает высокоточную синхронизацию, но страдает от собственных проблем, таких как рассинхронизация между несколькими ядрами на некотором (глючном) оборудовании.

1 голос
/ 22 октября 2011

Вы можете основывать время на nanoTime вместо миллис.Проблема, с которой вы столкнулись при работе с Millis, заключается в том, что в некоторых системах часы могут дрейфовать на целых 10 мс в час, а Windows выполняет синхронизацию NTP только раз в неделю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...