Сообщение Re[8]: TimeProvider от 03.08.2023 12:49
Изменено 03.08.2023 12:52 Философ
Re[8]: TimeProvider
Здравствуйте, vdimas, Вы писали:
V>GetTickCount64 — это просто чтение кешированной переменной, значение которой обновляется каждый раз при срабатывании системного таймера.
В случае Stopwatch.GetTimestamp() даже записи в переменную может не быть.
V>В общем, первый способ имеет низкую разрешающую способность, но дешевый.
V>Второй способ имеет лучшую разрешающую способность, но дорогой. ))
В абсолютном большинстве случаев он столь же дешёвый, если не дешевле: за кадром выполняется команда RDTSC, которая копирует содержимое MSR в EDX:EAX — обращение к памяти не происходит. А MSR обновляется сам, всегда.
Такое поведение в абсолютном большинстве случаев. Иное — если недоступна RDTSC, то такого на практике под виндой ни у кого пока не было (ни у кого из миллиардов пользователей). Иное поведение может быть, если винда принудительно настроена на использование HPET.
Если недоступна HPET и RDTS, то будет использован тот же таймер что ты предлагаешь, с соответствующей точностью.
V>GetTickCount64 — это просто чтение кешированной переменной, значение которой обновляется каждый раз при срабатывании системного таймера.
В случае Stopwatch.GetTimestamp() даже записи в переменную может не быть.
V>В общем, первый способ имеет низкую разрешающую способность, но дешевый.
V>Второй способ имеет лучшую разрешающую способность, но дорогой. ))
В абсолютном большинстве случаев он столь же дешёвый, если не дешевле: за кадром выполняется команда RDTSC, которая копирует содержимое MSR в EDX:EAX — обращение к памяти не происходит. А MSR обновляется сам, всегда.
Такое поведение в абсолютном большинстве случаев. Иное — если недоступна RDTSC, то такого на практике под виндой ни у кого пока не было (ни у кого из миллиардов пользователей). Иное поведение может быть, если винда принудительно настроена на использование HPET.
Если недоступна HPET и RDTS, то будет использован тот же таймер что ты предлагаешь, с соответствующей точностью.
Re[8]: TimeProvider
Здравствуйте, vdimas, Вы писали:
V>GetTickCount64 — это просто чтение кешированной переменной, значение которой обновляется каждый раз при срабатывании системного таймера.
В случае Stopwatch.GetTimestamp() даже записи в переменную может не быть.
V>В общем, первый способ имеет низкую разрешающую способность, но дешевый.
V>Второй способ имеет лучшую разрешающую способность, но дорогой. ))
В абсолютном большинстве случаев он столь же дешёвый, если не дешевле: за кадром выполняется команда RDTSC, которая копирует содержимое MSR в EDX:EAX — обращение к памяти не происходит. А MSR обновляется сам, всегда.
Такое поведение в абсолютном большинстве случаев. Иное — если недоступна RDTSC, то такого на практике под виндой ни у кого пока не было (ни у кого из миллиардов пользователей). Иное поведение может быть, если винда принудительно настроена на использование HPET.
Если недоступны HPET и RDTS, то будет использован тот же таймер что ты предлагаешь, с соответствующей точностью.
V>GetTickCount64 — это просто чтение кешированной переменной, значение которой обновляется каждый раз при срабатывании системного таймера.
В случае Stopwatch.GetTimestamp() даже записи в переменную может не быть.
V>В общем, первый способ имеет низкую разрешающую способность, но дешевый.
V>Второй способ имеет лучшую разрешающую способность, но дорогой. ))
В абсолютном большинстве случаев он столь же дешёвый, если не дешевле: за кадром выполняется команда RDTSC, которая копирует содержимое MSR в EDX:EAX — обращение к памяти не происходит. А MSR обновляется сам, всегда.
Такое поведение в абсолютном большинстве случаев. Иное — если недоступна RDTSC, то такого на практике под виндой ни у кого пока не было (ни у кого из миллиардов пользователей). Иное поведение может быть, если винда принудительно настроена на использование HPET.
Если недоступны HPET и RDTS, то будет использован тот же таймер что ты предлагаешь, с соответствующей точностью.