Здравствуйте. Пишу я тут маленькую прогу, которая определяет некоторую инфу о конфигурации компа (использую WMI). Кто-нибудь знает, как можно под Виндой определить частоту ЦП или памяти? WMI возвращает кривые значения частоты ЦП, частоту памяти вообще там не узнать. Я получаю правильную частоту системной шины, но не знаю множителя... Откуда вообще эта инфа берется тем же CPU-Z? Заранее спасибо за советы.
P.S. За ссылку на форум, где есть шанс получить совет, тоже буду благодарен.
Последний раз редактировалось __alex8 05.11.2009 0:39, всего редактировалось 1 раз.
В книге Фень Юань "Графика в Windows" один из первых примеров. К сожалению под рукой книги нет, поэтому точнее сказать не могу. Но её легко найти в эл.виде.
Последний раз редактировалось D_A_R 02.11.2009 11:30, всего редактировалось 1 раз.
Member
Статус: Не в сети Регистрация: 30.03.2009 Откуда: Екатеринбург
код показывает правильно,он показывает с плавающей точкой просто,если округлить то нормальная частота получается Замените Button1->Caption =dwTimerLo/(1000.0*500); на Button1->Caption =dwTimerLo/(1000*500);
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
Ну да, кол-во тиков процессора через пару запросов RDTSC. А вот время надо измерять. Например, через QueryPerformanceCounter / QueryPerformanceFrequency
И еще - попробуй поставить Sleep,1000 - результат тебя удивит. А лекарство - см. выше.
Есть такое понятие, как гранулярность шедулера. 1000 на него делится без остатка, а 500 нет.
serj, разъясните, что за 'гранулярность шедулера' и почему учитывать надо именно ее, а не разрешение системного таймера. Разрешение системного таймера на мультипроцессорной WinXP/2003 равно 7.8125ms, с этой стороны - что 500, что 1000 - без разницы
/TIMERES= Sets the resolution of the system timer on the standard x86 multiprocessor HAL (Halmps.dll). The argument is a number interpreted in hundreds of nanoseconds, but the rate is set to the closest resolution the HAL supports that isn't larger than the one requested. The HAL supports the following resolutions: Hundreds of nanoseconds Milliseconds (ms) 9766 0.98 19532 2.00 39063 3.90 78125 7.80 The default resolution is 7.8 ms. The system timer resolution affects the resolution of waitable timers. Example: /TIMERES=21000 would set the timer to a resolution of 2.0 ms.
Есть опция в boot.ini чтобы менять разрешение системного таймера, но по дефолту оно = 1/128 sec ~ 7.8ms.
В некоторых других документах всплывает удвоенная величина 7.8125x2=15.6ms. Но это, по-видимому, связано со спецификой использования системного таймера прикладными программами
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения