powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Многопоточность - исследование длительности квантов времени
15 сообщений из 40, страница 2 из 2
Многопоточность - исследование длительности квантов времени
    #39966596
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mike,

Это да, но в целом точности в пару мс добиться вполне можно. Большую часть времени.
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39967034
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mike
динамическое изменение частоты процессора сделает такой "таймер" неюзабельным..
Не: barmaley57Высокоточный таймер реализован в отдельной микросхеме, его частота одна и та же практически на всех новых машинах и составляет порядка 3 580 000 отсчетов в секунду. Частота не зависит от каких-либо факторов и задается при старте машины.
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39967320
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
В программе необходимо указать количество запускаемых потоков, а в диспетчере задач выполнить привязку процесса к одному ядру.
Пытались ли вы изучить, как влияет на общее время исполнения наличие переброса потоков между ядрами и его отключение, т.е. привязка к одному ядру? Когда поток переносится на другое ядро, то это должно бы приводить к уменьшению эффективности кеша конкретного ядра.
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39967399
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown,

Нет, не пытался. Предполагаю, что разница будет не существенной, скорее всего её не удастся определить.
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39967425
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
Нет, не пытался.
Жалко. Мало у кого есть соответствующий (почти)серверный процессор.

DmSer
Предполагаю, что разница будет не существенной, скорее всего её не удастся определить.
Возможно, это больше зависит от алгоритма, чем от процессора. Однако, думаю, что в случае сравнения, например, 128L1+256L2 vs 192L1+1024L2 более мощный процессор понесёт большие потери от поведения шедулера, размывающего нагрузку.
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39967487
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown
DmSer
Нет, не пытался.
Жалко. Мало у кого есть соответствующий (почти)серверный процессор.


Повеселили, спасибо! :)
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39971361
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня утилита Руссиновича ClockRes показывает на обоих компах Current timer interval = 1.000 ms, хотя никаких асек на компе не стоит. Кто так выставляет - не знаю.
Предполагаю, что в данный момент такая же ситуация у большинства пользователей.
А если так, что в большинстве случаев функция Sleep работает с точностью 1 мс.
Кстати, на размер кванта текущее разрешение системного таймера походу не влияет.
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39971374
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
Предполагаю, что в данный момент такая же ситуация у большинства пользователей.

Я посмотрел на Win7 и 10, на обеих, после загрузки, интервал равен: 15.625. После запуска Delphi XE2 интервал устанавливается в 0.977. А вот 10.4 интервал уже не меняет, он остаётся дефолтным.
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39971376
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если правильно помню, MS VS в единицу устанавливает
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39971514
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
хотя никаких асек на компе не стоит.

white_nigger
Если правильно помню, MS VS в единицу устанавливает

Многие майкрософтские поделки меняют интервал. В т.ч. даже анимационные темы (считай - ОС).
Но не все даже эту тему читают. Про гугл молчу.
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39974288
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несмотря на то, что разрешение системного таймера выставлено в 1 миллисекунду, это никак не помогает функции GetTickCount (либо GetTickCount64) работать точнее. При таком вот коде:
Код: pascal
1.
2.
3.
  tc := GetTickCount;
  sleep(20);
  tc := GetTickCount - tc;



в tc будут значения то 15, то 16, то 31, то 32.

Если же проводить замеры с использованием функции Now, то точность получается гораздо выше.

Таким образом, функция GetTickCount является очень грубым средством для замеров интервалов времени.
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39974294
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
Несмотря на то, что разрешение системного таймера выставлено в 1 миллисекунду, это никак не помогает функции GetTickCount (либо GetTickCount64) работать точнее. При таком вот коде:
Код: pascal
1.
2.
3.
  tc := GetTickCount;
  sleep(20);
  tc := GetTickCount - tc;



в tc будут значения то 15, то 16, то 31, то 32.

Если же проводить замеры с использованием функции Now, то точность получается гораздо выше.

Таким образом, функция GetTickCount является очень грубым средством для замеров интервалов времени.
Скорее проблема в sleep: даже если она реально спит ровно 20 мс, то, скорее всего, ОС уже отдала процессор другому потоку (процессу).
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39974295
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer,

Ты лучше про слип почитай.
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39974310
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
DmSer,

Ты лучше про слип почитай.


Я делаю замеры с использованием QueryPerformanceCounter, которая позволяет замерять интервалы почти с микросекундной точностью. Я вижу, что Sleep(20) занимает около 20 мс (плюс минус копейки). Замеры с использованием функции Now также показывают 20 мс.
Так что у меня нет сомнений, что Sleep выполняется 20 мс.

Прихожу к выводу, что msdn врёт:
msdnThe resolution of the GetTickCount function is limited to the resolution of the system timer, which is typically in the range of 10 milliseconds to 16 milliseconds.

Может фразу "limited to the resolution" следует интерпретировать как "limited to the max resolution"?
...
Рейтинг: 0 / 0
Многопоточность - исследование длительности квантов времени
    #39974323
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer,

Посыпаю голову пеплом. Херню я про точность GetTickCount написал . Забыл, что у меня в качестве лоурез таймера, по дефолту, используется мультимедийный, который timeGetTime. timeBeginPeriod влияет именно на него, а у GetTickCount период не меняющийся, его можно получить через GetSystemTimeAdjustment /lpTimeIncrement/.
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Многопоточность - исследование длительности квантов времени
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]