各位大大好! 好久没来坛子了 最近要给学校做个小软件 测试人的反应时间 正常人约(200~300ms) 因为是实验数据要求精确到1ms 没有其他实验硬件设备 就一台电脑 电脑键盘的延时可以忽略 类似这样 MapShow()//出现一幅画面
GetResponseTime()//取第一次系统时间
.
.
PesponseKeyPress()//测试者按下键盘
GetResponseTime()//取第二次系统时间GetTickCount QueryPerformanceCounter
貌似都不行因为win nt后都是多线程 当前的代码可能会被挂起 所以取得的数据不具可信度
GetThreadTimes GetProcessTimes貌似也不行可以参见下面的链接http://blog.kalmbachnet.de/?postid=28
想请问大虾们有没有什么办法可以正确的得到反应时间 或者有没有知道两个GetResponseTime()之间被分配了多少CPU时间片?
GetResponseTime()//取第一次系统时间
.
.
PesponseKeyPress()//测试者按下键盘
GetResponseTime()//取第二次系统时间GetTickCount QueryPerformanceCounter
貌似都不行因为win nt后都是多线程 当前的代码可能会被挂起 所以取得的数据不具可信度
GetThreadTimes GetProcessTimes貌似也不行可以参见下面的链接http://blog.kalmbachnet.de/?postid=28
想请问大虾们有没有什么办法可以正确的得到反应时间 或者有没有知道两个GetResponseTime()之间被分配了多少CPU时间片?
QueryPerformanceCounter 够了
多线程影响应该几乎可以忽略
一般好像是20ms这样有可能其他优先级高的线程执行了 那其中的误差就有20ms以上了把
但是我要误差在1ms左右 我知道我这样理解对不对
但是,如果别的进程、线程没有持续的高负荷,切换的开销应该是1ms以下的吧如果真的很担心这个,可以做一个以前的dos下的程序好了
GetTickCount用过, 比timer强
其他的就不知道了
GetTickCount和Timer最大精度也就1/64秒。
做这个1/64秒其实也差不多了。
这样的数据不具可信度啊
写个dos下的程序比较现实点