|
Дрифт таймеров
|
|||
---|---|---|---|
#18+
Сходу извиняюсь, что не смогу полноценно участвовать в этой теме - весь в комбинезоне и пыли в госпитале и в гипсах. Поэтому жду лишь рассуждений, соображений... ну, типа, вброс на вентилятор... звыняйте за это, други. Тема мутная. Это видно как M$ ретуширует ее десятилетиями ужЕ. Реализовано два таймера: 1. QueryPerformanceCounter 2. GetSystemTimeAsFileTime Первый - для собственно взятия отсчетов времени. Второй - для привязки первого к системному времени. Как без использования внешнего эталона первого стратума (да любого!) обеспечить достоверность первого таймера? Через периодически вносимую в БД поправку на ветер. Нужны именно наносеки. Если бы микро, хотя бы, то насрать - усушка, утруска... Кто дрифтит относительно кого?! Чей кварц надежнее? Как это попытаться хотя бы субъективно оценить - кто плывет относительно кого? Дрифт в районе 3 сек в сутки и сильно зависит от железа. Даже если есть способ ответить на вопрос выше - Чей кварц надежнее? - то, как это привязать к конкретному (произвольному) железу? Задача усложняется тем, что единственная пауза в течение суток лишь в районе 21-23. Т.е. переход через нули (читай - через дату) неизбежен. Задача упрощается тем, что на пояса можно забить - все в классическом GMT/UTC. Я понимэ, что вопрос этот более в сторону геймерских форумов, но туда без знания Си и Асм лучше не входи... Но и там в первую очередь наклонят в сторону kernel-mode API KeQueryPerformanceCounter, или, что еще хлеще, в сторону RDTSC или RDTSCP... -------------------------- Тут многие в бой рвутся с невостребованным своим знанием... зей ар велкам ту :) . . ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2016, 06:03 |
|
Дрифт таймеров
|
|||
---|---|---|---|
#18+
Lieutenant PigeonЧей кварц надежнее?Эммм... если бы хотя бы можно было вести речь о типе кварца... но в данном случае ты имеешь дело с двумя конкретными экземплярами. А чёрная овца везде попасться может. Так что ничего лучше взаимной калибровки, я полагаю, придумать не получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2016, 15:54 |
|
Дрифт таймеров
|
|||
---|---|---|---|
#18+
Lieutenant Pigeon, наткнулся недавно на статью (в этом не разбираюсь, но может будет чем полезна) https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408(v=vs.85).aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2016, 22:37 |
|
Дрифт таймеров
|
|||
---|---|---|---|
#18+
Парни, спасибо. Модеры - зря потерли первый ответ. Он, хоть и был чутка с недопонианиме проблемы, но характеризовал ее этим. Дело не в сутгочном дрифте, а в моментном. У второго таймера 15 мск на оюычной машине. Брать отсчеты в этом его промежутке смысла нет. А вот привязывая эти 15-мск зазоры к тактам кварца, отдаваемым QueryPerformanceCounter получаем этот самый дрифт, который, понимания для, легче первести в суточную величину. У меня есть графики этого дрифта, но рука правая уже не моя. Потом, половчее бцдц, покажу. Кто мне отвечал в потертом: ЩСА5 73 :) . ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2016, 07:55 |
|
Дрифт таймеров
|
|||
---|---|---|---|
#18+
AkinaLieutenant PigeonЧей кварц надежнее?Эммм... если бы хотя бы можно было вести речь о типе кварца... но в данном случае ты имеешь дело с двумя конкретными экземплярами. А чёрная овца везде попасться может. Так что ничего лучше взаимной калибровки, я полагаю, придумать не получится. guest_rusimportLieutenant Pigeon, наткнулся недавно на статью (в этом не разбираюсь, но может будет чем полезна) https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408(v=vs.85).aspx Акина, спасибо. Импорт, спасибо. Импорт, пруф полезный, спасибо, но только для новеньких. Обрати вниание на мою оговорку: "M$ ретуширует ее десятилетиями ужЕ" Нужно полностью отвязаться от железа. Но и не это главное. Есть задача - привять такты процессора к системному времени. Из доступных через API самые достоверные - упомянутые два. Сложность в том, что обладая (мы полагаем так, но альтернатив иных нет) равной resolution, они работают в разных accuracy. Поэтому, привязывать мы можем первый ко второму с частотой, лишь не меньше accuracy второго. Я усложню задачу... Все это хозяйство надо привязать к двум внешним источникам, данные которых я мечу ужЕ сам. Оба несут свои таймштемпы. Один с accuracy в 1 сек. Второй - с недостоверной accuracy в 0.001 сек. Да и насрать! Но есть переход через сутки - это раз. И внутренние границы сессий - это два. Т.е. у обоих последний отсчет в сессии не может быть позже, скажем, 21:45. Если один из трех (первый 1 сек, второй - 0.001 сек и мой с кучей нулей на номерном знаке) покажет не то, то следуют ошибка деления, переполнение и пр... Проверять точность и дрифт я на кажлм отсчете не могу - затраты. Мне скорострельность нужна. Я ушел от Акса вообще. Тормозит. Пишу базу в лоб в текстовый файл. Готовлюсь перейти на бинарник. Для послеследующей аналитики - переходник сваять не проблема. А в онлайне СИНХРОННОМ под VB6 не пропустить эвент - вот задача. . ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 04:53 |
|
Дрифт таймеров
|
|||
---|---|---|---|
#18+
Lieutenant Pigeon... в онлайне СИНХРОННОМ под VB6 не пропустить эвент - вот задача.Это я ужЕ про скорострельность. Не про дрифт... . ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 05:05 |
|
Дрифт таймеров
|
|||
---|---|---|---|
#18+
Да, вот еще... Если кто интересуется темой, то ... ... на нескольких машинах я давно, с частотой 3 сек, мониторю показания QueryPerformanceFrequency через As Currency, но не BigInt. Т.е. поправка на 10^4 Могу утверждать, что внутри одной машиносессии (т.е. от ресета до ресета) в рамках запущенного процесса частота не меняется. Между ресетами - может прыгать на килогерц-другой. Но - не обязательно. Вот лог с одной из машин: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Показательно, что если частота (отсчет ее ?!) прыгает, то только на первом такте запуска монитора, но ни как не в процессе его работы. Осталось только написать батник, который внутри одной машиносессии будет перезапускать монитор. Понятно ,что эта частота несколько абстрактная вещь, но, по крайней мере, имеем уверенность что ее можно использовать внутри суток... Как-то так... . ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2016, 11:52 |
|
|
start [/forum/search_topic.php?author=kakichev&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
226ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 473ms |
total: | 805ms |
0 / 0 |