Как любое приложение (Chrome, Flash и т. Д.) Получает разрешение по времени лучше, чем системное разрешение? - PullRequest
1 голос
/ 25 сентября 2008

Эта статья на сайте технической сети Microsoft содержит exe, который вычислит минимальное временное разрешение вашего Windows-компьютера - это должен быть наименьший «флажок», доступный для любого приложения на этом компьютере:

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

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

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

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

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

Ответы [ 3 ]

4 голосов
/ 25 сентября 2008

Вы можете сократить время до 1 мс с мультимедийными таймерами и даже далее с QueryPerformanceCounter.

См. Также Разрешение API времени GetLocalTime () .

РЕДАКТИРОВАТЬ: Частичный ответ на новый вопрос ...

Разрешение системного времени составляло около 15 мс в архитектуре Windows 3 и 95. В NT (и его преемниках) вы можете получить лучшее разрешение на уровне аппаратной абстракции (HAL). QueryPerformanceCounter подсчитывает затраченное время, а не циклы процессора * Статья 1012 *, написанная Раймондом Ченом, может дать вам некоторые дополнительные сведения.

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

1 голос
/ 25 сентября 2008

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

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

(Уценке не нравятся символы в URL)

См. «Внутри таймеров высокого разрешения Windows NT», на которые ссылается ваша ссылка.

0 голосов
/ 25 сентября 2008

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

В этом описании локального APIC упоминается его использование в качестве таймера.

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

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