Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

а вот и результаты выполнения Sleep(1) на разных компьютерах. Переключение приоритета ни на что не влияет

Отправлено koyodza (93.73.215.120) 07 января 2010, г. 14:24
В ответ на: 2 koyodza - какой же Вы тёмный в приоритетах виндовых задач! :) Живёте руководствуясь мифами-страшилками, которые Вам кто-то когда-то рассказал в детстве. отправлено Шунт_гороховый 07 января 2010, г. 05:46

align=Top
тестировал на 3 компьютерах:
1. AMD X2-4000 / XP Pro
2. Celeron 1600 / XP HE
3. Celeron 630 (ASUS eee PC 701) / XP HE
На первом минимальный квант около 2 мсек, на втором - около 10 мсек, на третьем - около 16 мсек. Переключение приоритета перед вызовом Sleep(1) ни на что не влияет.

Можете протестировать сами на своих машинах и своих ОС. Сейчас у меня нету 98/МЕ, но когда я проводил подобное тестирование около 10 лет назад, то получал минимальный квант около 55 мсек на машинах типа К5-133 и интел Р166ММХ

Исходник "измерительной" части:
#define COUNT 100

void CTestSleepDlg::OnOK()
{
int i, y1[COUNT], y2[COUNT];

LARGE_INTEGER freq, t1, t2, dt1, dt2;
::QueryPerformanceFrequency(&freq);
HANDLE h = GetCurrentThread();

for (i = 0; i < COUNT; i++)
{
//=======================================
::QueryPerformanceCounter(&t1);
Sleep(1);
::QueryPerformanceCounter(&t2);
//----------------------------------
dt1.QuadPart = t2.QuadPart - t1.QuadPart;
dt1.QuadPart *= 1000000;
dt1.QuadPart /= freq.QuadPart;

y1[i] = (int)dt1.QuadPart;
//=======================================
int prv = ::GetThreadPriority(h);
BOOL e = ::SetThreadPriority(h, THREAD_PRIORITY_TIME_CRITICAL);
::QueryPerformanceCounter(&t1);
Sleep(1);
::QueryPerformanceCounter(&t2);
::SetThreadPriority(h, prv);
//----------------------------------
dt2.QuadPart = t2.QuadPart - t1.QuadPart;
dt2.QuadPart *= 1000000;
dt2.QuadPart /= freq.QuadPart;

y2[i] = (int)dt2.QuadPart;
//----------------------------------
if (!e)
{
MessageBox("Priority set error");
return;
}
//=======================================
}

CString s, s1;
s1.Format("Freq = %d\r\n-------\r\n", (int)freq.QuadPart);
for (i = 0; i < COUNT; i++)
{
s.Format("%d %d\r\n", y1[i], y2[i]);
s1 += s;
}
m_Ed1.SetWindowText(s1);
}
Картинка: http://upload.caxapa.ru/TestSleep.zip
Ссылка: http://upload.caxapa.ru/sleep1.txt

Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 567:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru