Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Погрешность GetTickCount 
V
    Опции темы
Matematik
Дата 18.4.2006, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 1
Всего: 50



Какая у функции GetTickCount погрешность? 
PM MAIL WWW ICQ   Вверх
_hunter
Дата 18.4.2006, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



все те же 10мс 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Alexeis
Дата 18.4.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



_hunter, 
Обидно, я только что проверил 
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  list    : TStringList;
  i : integer;
begin
 list    := TStringList.Create;
 for i := 1 to 10000
 do
   List.Add(IntToStr(GetTickCount));
 memo1.Lines.AddStrings(list);
end;

Шаг и вправду 10 мс 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rouse_
Дата 18.4.2006, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 18
Всего: 29



Попробуй вот так:

Код

function GetTickCountEx: Comp;
asm
    push ebp
    mov ebp,esp
    add esp,-$10
    rdtsc
    mov [ebp-$08],eax
    mov [ebp-$04],edx
    fild qword ptr [ebp-$8]
    mov esp,ebp
    pop ebp
end;
 


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 20.4.2006, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



Rouse_, результат что в микросекундах?????!!!! 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rouse_
Дата 20.4.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 18
Всего: 29



Результат: кол-во тактов процессора прошедшее с момента старта системы smile 


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
SergeCpp
Дата 20.4.2006, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 1
Всего: 124



Microsoft® Windows® Internals, Fourth Edition: Microsoft Windows Server™ 2003, Windows XP, and Windows 2000 
By Mark E. Russinovich, David A. Solomon 

BOOT.INI

/TIMERES=
 Sets the resolution of the system timer on the standard x86 multiprocessor HAL (Halmps.dll).
The argument is a number interpreted in hundreds of nanoseconds,
but the rate is set to the closest resolution the HAL supports that isn't larger than the one requested.
The HAL supports the following resolutions:

Hundreds of nanoseconds  Milliseconds (ms)
 
97660.98                            195322.00
 
390633.90                           781257.80

The default resolution is 7.8 ms. The system timer resolution affects the resolution of waitable timers.

Example: /TIMERES=21000 would set the timer to a resolution of 2.0 ms.

 
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 21.4.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



SergeCpp, это все хорошо но как реализовать
Цитата(SergeCpp @  20.4.2006,  14:29 Найти цитируемый пост)
Example: /TIMERES=21000 would set the timer to a resolution of 2.0 ms.

 smile 


Rouse_, 
Цитата(Rouse_ @  20.4.2006,  14:18 Найти цитируемый пост)
Результат: кол-во тактов процессора прошедшее с момента старта системы

Количесво тактов процессора в единицу времени зависит от загружености процессора или опредляется тактовой частотой процессора smile  


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
SergeCpp
Дата 21.4.2006, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 1
Всего: 124



Файл BOOT.INI (не копируйте весь! — только поставьте /timeres=21000)

Код
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional RUS" /fastdetect /timeres=21000


Количество тактов процессора в единицу времени не зависит от загружености процессора, а определяется тактовой частотой процессора

И это не всегда количество тактов процессора, прошедшее с момента старта системы!
(какой-нибудь драйвер может выполнить WRMSR для этого регистра и изменить это значение)    

Это сообщение отредактировал(а) SergeCpp - 21.4.2006, 12:48
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 21.4.2006, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



SergeCpp, Спасибо БОЛЬШОЕ, я понял это заставит работать все таймеры точнее, а не скажется ли это на работе других программ и работе системы в целом, как мне кажется это приведет к увеличению загрузки процессора или я не прав smile   

Это сообщение отредактировал(а) alexeis1 - 21.4.2006, 12:45


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
SergeCpp
Дата 21.4.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 1
Всего: 124



Так как планировщик будет вызываться более часто, то немного скажется... но совсем немного! Попробуйте! 
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 21.4.2006, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



SergeCpp, эта функция очень удобна для домашнего компьютера, но использовать ее в прикладных программах не получится, так как менять системные настройки в чужом компьютере не всегда можно, более того не корректно.
Подождем Rouse_ ... 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
SergeCpp
Дата 21.4.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 1
Всего: 124



Тогда High-Resolution Timer

QueryPerformanceFrequency() & QueryPerformanceCounter()

Также Multimedia Timers  

Это сообщение отредактировал(а) SergeCpp - 21.4.2006, 12:57
PM MAIL WWW ICQ   Вверх
Rouse_
Дата 21.4.2006, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 18
Всего: 29



Цитата(alexeis1 @  21.4.2006,  13:29 Найти цитируемый пост)
Количесво тактов процессора в единицу времени зависит от загружености процессора или опредляется тактовой частотой процессора

Зависит от загруженности процессора. Windows к сожалению не является системой реального времени поэтому главный поток программы работает только во время выделенного ему кванта времени, в то время когда поток стоит, процессор выполняет другие задачи. Процессор обрабатывает инструкции переданные ему программами, причем для выполнения каждой инструкции требуется отределенное кол-во тактов процесора. К примеру для выполнения моей функции затраты будут равны примерно 120 тактам...
QueryPerformanceFrequency() & QueryPerformanceCounter() основаны именно на инструкции rdtsc с соответствующим поправочным значением модифицирующим конечный результат...

Добавлено @ 13:25 
Цитата(SergeCpp @  21.4.2006,  13:34 Найти цитируемый пост)
Количество тактов процессора в единицу времени не зависит от загружености процессора, а определяется тактовой частотой процессора

Хотя да, тут смотря как смотреть - кол-во тактов процессора естетсвенно неизменно ибо он работает в реальном времени, но если смореть на это значение из программы работающей на третьем кольце защиты, то значение между двумя вызовами варьируется именно исходя из загруженности...
 


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.