На прошлой неделе мне нужно было протестировать несколько различных алгоритмических функций и, чтобы облегчить себе задачу, я добавил несколько искусственных снов и просто измерил время. Примерно так:
start = clock();
for (int i=0;i<10000;++i)
{
...
Sleep(1);
...
}
end = clock();
Поскольку аргумент Sleep выражается в миллисекундах, я ожидал, что общее время настенных часов составит около 10 секунд (намного больше из-за алгоритмов, но это сейчас не важно), и это действительно был мой результат.
Этим утром мне пришлось перезагрузить компьютер из-за новых исправлений Microsoft Windows, и, к моему удивлению, Sleep (1) больше не занимал 1 миллисекунду, а около 0,0156 секунды.
Таким образом, результаты моего теста были полностью искажены, так как общее время выросло с 10 секунд до примерно 156 секунд.
Мы проверили это на нескольких компьютерах и, по-видимому, на некоторых компьютерах результат одного сна действительно составил 1 мс. На других ПК это было 0,0156 секунд.
Затем, внезапно, через некоторое время время сна упало до 0,01 секунды, а затем через час вернулось к 0,001 секунде (1 мс).
Это нормальное поведение в Windows?
Является ли Windows «сонным» в первые часы после перезагрузки, а затем постепенно приобретает более высокий уровень детализации сна через некоторое время?
Или есть другие аспекты, которые могут объяснить изменение в поведении?
Во всех моих тестах ни одно другое приложение не работало в одно и то же время (или: по крайней мере, не занимая ни одного процессора).
Есть идеи?
ОС - Windows 7.