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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замерить реакцию человека, как очень точно померить время 
:(
    Опции темы
MYL
Дата 18.12.2006, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А, вроде понял надо написать
Код

var
freg:int64;
begin
  QueryPerformanceFrequency(freg);
   our_time:=(finish-start)/freg;
end;


У меня ещё вопрос. А если мою программу будут запускать на совершенно разных машинах, то будут ли результаты одинаковыми, если, допустим, у всех людей реакция будет одинаковая? То есть, предположим, два варианта:
1. У человека Celeron 333 и десять запущенных приложений
2. У человека Intel Core 
Если у двух человек одинаковая реакция, то будут ли на этих двух машинах одинаковые результаты? 

В самом первом моём сообщении - пример из Delphi Russian Knowledge Base from Vit Version 2.3. Насколько я понимаю, там считают WaitCal, чтобы избежать разницы? 
То есть мне надо считать 
Код

our_time:=(finish-start)/freg-WaitCal;

Или я ошибаюсь? 

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


Амеба
Group Icon


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

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



Разница будет только в точности измерений, но в данном случае это не существенно.


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

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

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


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Если надо сверхточное время замерить, как ты говоришь, то тебе скорее вообще в раздел "программирование контроллеров" потому, что сверхточного времени в многопоточной системе а ля Windows, которая к тому же стоит на разных машинах быть не может... smile (чисто мое ИМХО)


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
W4FhLF
Дата 19.12.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

Репутация: 6
Всего: 121



Цитата

чисто мое ИМХО


Правильно рассуждаешь. Потери на многопоточности и как результат неточность измерений могут дел натворить таких, что получатся далеко не объективные результаты. Хотя опять же при грамотном выполнении задачи и на Celeron и на Core Duo результаты будут довольно точными. Но если накладывать реальные условия(т.е. могут быть запущены 10 приложений или ещё что другое), то конечно весь этот тест не стоит ничего. 
Что касается точности GetTickCount то её вполне достаточно, тем более, если учитывать что два её срабатывания как раз укладываются во время прохождения импульса от сетчатки до мозга и от мозга до пальца составляет ~20 мс, прошу заметить, что это только лишь  время движения импульсов и только лишь в том случае, если человек полностью сосредоточен на задаче.




--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Alexeis
Дата 19.12.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(W4FhLF @  19.12.2006,  13:05 Найти цитируемый пост)
Что касается точности GetTickCount то её вполне достаточно

Я же протестировал! При 90мкс погрешность больше 10%. Может для вас этого и достаточно, но для более менее серьезных исследований сомневаюсь! И еще, установите приоритет программе Real Time. Так чтобы ее как можно меньше прерывали другие программы. Это серьезно может повлиять на точность. 


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

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

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


found myself
****


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

Репутация: 6
Всего: 121



alexeis1
Цитата

Я же протестировал! При 90мкс погрешность больше 10%. Может для вас этого и достаточно, но для более менее серьезных исследований сомневаюсь! И еще, установите приоритет программе Real Time. Так чтобы ее как можно меньше прерывали другие программы. Это серьезно может повлиять на точность. 


Ну во-первых, где это у нас речь шла о 90мкс? 
Во-вторых, суть Вашего теста мне не ясна, чтобы измерить точность GetTickCount Вы использую другую функцию(Sleep), которая может давать чудовищные для данного случая погрешности. Или я неправильно понял сути?
В-третьих, кто определил серьёзность исследований? Вы? При серьёзных исследованиях используются отдельные аппратные таймеры или по-крайней мере комплексы, которые работают в реальнои режиме процессора + учитывается масса других факторов, о которых здесь и небыло упомянуто. 
В-четвертых, ненужно придираться к отрывкам, я не одной лишь цитируемой фразой ограничился в своих рассуждениях, читайте и вникайте целиком в ответ.
 Прошу заметить, что я не настаиваю на её использовании и не говорю, что она безупречна, я лишь сказал, само собой, если есть возможность использова более точные средства, то это нужно делать, но опять же, повторяю, многозадачность может свести всю точность на нет.

Это сообщение отредактировал(а) W4FhLF - 19.12.2006, 14:50


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
MYL
Дата 19.12.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

И еще, установите приоритет программе Real Time.

Как?

Добавлено @ 14:53 
Цитата

или по-крайней мере комплексы, которые работают в реальнои режиме процессора

Может быть, такие программы уже существуют? Но где их взять? 

Цитата

В-третьих, кто определил серьёзность исследований

Ничего серьёзного, но боюсь, что мою программку может запустить на разных машинах более 1 тысячи человек (без шуток). И я боюсь, что везде результаты могут быть разными. Вот поэтому я и спрашиваю...

Добавлено @ 14:57 
и у меня нет времени изучать ни MSDN, ни  контроллеры, ни системы в реальном времени....  Мне бы её как-нибудь написать, чтобы потом не было стыдно... Вот и вся задача! 
PM MAIL   Вверх
W4FhLF
Дата 19.12.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

Репутация: 6
Всего: 121



Повысить приоритет ты конечно можешь, но это съест кучу времени у других процессов, ощутишь ли ты при этом значительную прибавку в точности сказать сложно. 
В остальном конечно использую связку QueryPerformanceCounter/QueryPerformanceFrequency, ничего лучше не придумаешь.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Alexeis
Дата 19.12.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(W4FhLF @  19.12.2006,  14:45 Найти цитируемый пост)
Ну во-первых, где это у нас речь шла о 90мкс? 

http://forum.vingrad.ru/index.php?showtopi...;st=15&hl=#

Цитата(W4FhLF @  19.12.2006,  14:45 Найти цитируемый пост)
суть Вашего теста мне не ясна, чтобы измерить точность GetTickCount Вы использую другую функцию(Sleep), которая может давать чудовищные для данного случая погрешности. Или я неправильно понял сути?

Жмешь на кнопку через неопределенное время (от 1 до 5ти секунд) меняется цвет круглишка, сразу после этого считывается количество тиков, после повторного нажатия на кнопку число тиков замеряется еще раз. Разница выводится на экран.


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

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

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


found myself
****


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

Репутация: 6
Всего: 121



Ну наверно всё-таки не мкс, а мс.

Так, ну понял. А как Ваш тест характеризует точность данной функции?




--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Alexeis
Дата 19.12.2006, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



MYL, SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL)

Добавлено @ 15:26 
Цитата(W4FhLF @  19.12.2006,  15:17 Найти цитируемый пост)
Ну наверно всё-таки не мкс, а мс.

Ага их самых. 
Цитата(W4FhLF @  19.12.2006,  15:17 Найти цитируемый пост)
Так, ну понял. А как Ваш тест характеризует точность данной функции?

Нет он служит для оценки реакции человека. Сопоставима ли она с точностью GetTickCount(); 
90мс сопоставимо с 10мс имхо.

Это сообщение отредактировал(а) alexeis1 - 19.12.2006, 15:23


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

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

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


found myself
****


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

Репутация: 6
Всего: 121



Цитата

Нет он служит для оценки реакции человека. Сопоставима ли она с точностью GetTickCount(); 
90мс сопоставимо с 10мс имхо.


Ну вот, а о чём тогда спор? Я ведь изначально сказал, что достаточно этой функции.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Alexeis
Дата 19.12.2006, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Звиняюсь не с точностью а с погрешностью 10мс это же погрешность...


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

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

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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