2008-09-25 4 views
1

Эта статья о технической сети сайта компании Microsoft поставляет exe, который будет рассчитать минимальное разрешение по времени ваши окна машины - это должно быть наименьшим «тик» доступен для любого приложения на этой машине:Как любое приложение (хром, flash и т. Д.) Получает временное разрешение лучше, чем системное временное разрешение?

http://technet.microsoft.com/en-us/sysinternals/bb897568.aspx

Результат запуск этого приложения в моем текущем поле составляет 15.625 мс. Я также запускал тесты против Internet Explorer и получил то же разрешение от функции javascript Date().

Что сбивает с толку, так это то, что ИСПЫТЫЙ тест, который я провел против IE, дает гораздо более точное разрешение для браузера Chrome от Google (разрешение 1 мс) и для флеш-ролика, работающего в IE (1 мс). Может ли кто-нибудь объяснить, как любое приложение может получить разрешение часов лучше, чем часы машины? Если да, можно ли каким-то образом получить улучшенное разрешение в браузерах, кроме Chrome (без использования вспышки)?

Первый ответ ниже приводит к двум другим вопросам:

  1. Как таймер мульти-медиа получают раз между системой тиков. I Представьте системные часы как аналоговые часы с тикающей рукой, каждый тик составляет 15 мс. Как измеряется между тиками?
  2. Доступны ли мультимедийные таймеры для браузеров, особенно Интернет Проводник? Могу ли я получить доступ к нему с помощью C# или Javascipt без необходимости использовать программное обеспечение в браузере/машине пользователя ?
+0

Они доступны каждому приложение, использующее их. Прочитайте документы. – VVS 2008-09-25 19:30:15

+0

Дэвид - если есть таймер Javascript с разрешением лучше, чем Date(), неясно (как вы полагаете), что это такое, поэтому вопрос – WillR 2008-10-06 19:46:59

ответ

4

Вы можете получить до 1 мс multimedia timers и еще дальше с QueryPerformanceCounter.

См. Также GetLocalTime() API time resolution.

EDIT: Частичный ответ на новый подвопрос ...

разрешение системного времени было около 15 мс на архитектуре Windows, 3 и 95. На NT (и преемниках) вы можете получить лучшее разрешение с уровня абстракции оборудования (HAL). Статья QueryPerformanceCounter counts elapsed time, not CPU cycles, написанная Раймондом Ченом, может дать вам дополнительную информацию.

Что касается браузеров - я понятия не имею, что они используют для таймеров и как они взаимодействуют с ОС.

+0

Интересно. Это приводит к дополнительным очкам : – WillR 2008-09-25 19:24:58

0

APIC на процессоре работает со скоростью шины и имеет таймер. Они могут использовать это вместо системного времени. (Или они могут просто дать кучу точности, которой там нет).

Этот description of the Local APIC упоминает использование его как таймера.

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

1

Посмотри на timeBeginPeriod API. Из MSDN: «Эта функция влияет на глобальный параметр Windows. Windows использует самое низкое значение (то есть самое высокое разрешение), запрошенное любым процессом."

http://msdn.microsoft.com/en-us/library/ms713413(VS.85).aspx

(уценки не нравится в скобки URL)

"Inside Windows NT высокого разрешения Таймеры" ссылка по ссылке вы публикуемую.

Смежные вопросы