测试人的反应时间

caixiaobai08 2009-11-16 09:13:07
各位大大好! 好久没来坛子了 最近要给学校做个小软件 测试人的反应时间 正常人约(200~300ms) 因为是实验数据要求精确到1ms 没有其他实验硬件设备 就一台电脑 电脑键盘的延时可以忽略 类似这样

MapShow()//出现一幅画面
GetResponseTime()//取第一次系统时间
.
.
PesponseKeyPress()//测试者按下键盘
GetResponseTime()//取第二次系统时间


GetTickCount QueryPerformanceCounter
貌似都不行因为win nt后都是多线程 当前的代码可能会被挂起 所以取得的数据不具可信度
GetThreadTimes GetProcessTimes貌似也不行可以参见下面的链接http://blog.kalmbachnet.de/?postid=28
想请问大虾们有没有什么办法可以正确的得到反应时间 或者有没有知道两个GetResponseTime()之间被分配了多少CPU时间片?
...全文
222 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
caixiaobai08 2009-11-17
  • 打赏
  • 举报
回复
一个cpu时间片大概20ms左右 倘若MapShow的时候当前分配给该线程的时间片正好用完了且突然有个线程的优先级比他高 那么系统就会去执行优先级高的线程 至少被分走了一个cpu时间片 所以误差可能会在20ms以上
JonathanS666 2009-11-17
  • 打赏
  • 举报
回复
你的那段代码是在一个线程中的吧,你是如何判断得出的结果不准确呢?
caixiaobai08 2009-11-17
  • 打赏
  • 举报
回复
可以设置一下线程优先级 使得当我要的程序运行时 其他大部分应用程序的线程得不到时间片 不知道可以不?
wangk 2009-11-17
  • 打赏
  • 举报
回复
MapShow的动作在后台先做完
然后一次性把图绘制出来,实时性要求高的话可以用DX绘制
之后QueryPerformanceCounter,计算两次开始和结束的时间
caixiaobai08 2009-11-16
  • 打赏
  • 举报
回复
人的反应时间大概200~300ms这里貌似有好多个CPU分给其他线程的时间片了
一般好像是20ms这样有可能
GetResponseTime()//取第一次系统时间
.
.
PesponseKeyPress()//测试者按下键盘
中间其他优先级高的程序执行了 那其中的误差就有20ms以上了把
但是我要误差在1ms左右 我知道我这样理解对不对

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧