本帖最后由 xmiangui 于 2011-2-21 01:53 编辑
1、测试的时候手移动多快?DPI多高?
如果操作系统接收到空的MouseKey鼠标数据包,则不会响应应用程序对获取鼠标指针位移的请求。如果你以很慢的速度移动鼠标,可以发现测试软件中测出的数据比快速挥动鼠标小得多。
其次,低DPI导致慢速移动鼠标中回报的MouseKey也会变少,概率上操作系统获得的空MouseKey包也会变多。
拿我手上的煞魔蛇做例子1800DPI,500Hz,灵敏度5.5(相当于1000的DPI)的情况下,我缓慢的移动鼠标,这时候软件测出来的回报率大概在100-200之间。然后我把DPI调到800,灵敏度调到1(相当于仅80的DPI),回报率不变还是500Hz,同样缓慢移动,这时候测出来的回报率只有10-20Hz,因为鼠标回报了多得多的空帧。
这往往是测试中最大的影响因素,因为人的手不能保证让自己的鼠标一直在回报有位移数据的MouseKey包。
2、软件用的是什么接口?
有人喜欢拿Mouse Rate Checker测试鼠标回报率“是否稳定”以此为鼠标好坏的一个标准。而看软件作者的介绍,从来没有说明此软件是一个测评软件,作者的写软件的目的是让用户判断自己的USB鼠标工作在哪个回报率下,而不是被后人曲解去测回报率“稳不稳”。
并且,Mouse Rate Checker是一个99年的老软件,以软件来讲,已经非常陈旧了。按照微软的说明,获取鼠标数据有3种方式:Windows鼠标指针接口、DirectX Input接口、HID设备堆栈。由于第一种接口只是为一般的Windows程序设计,并不适合用来获取高精度鼠标数据,也不适合游戏等对鼠标移动有要求的场合。而99年的Mouse Rate Checker用的就是最旧的那种接口。至于鼠青天,我简单测试了下,肯定不是DirectX Input,那么99%是第一种方法了,而这种方法测试鼠标回报率不可避免的有比较大的延迟。
3、软件和操作系统本身的影响,回报率波动是由什么引起的
如果同时使用两个测试鼠标回报率的软件,比如开两个Mouse Movement Record(基于DirectX Input接口),然后移动鼠标,你会发现鼠标位移数据是一样的,但是回报率Hz却不一样。
MMR附有源代码,查看源代码就可以知道操作系统、或者说USB标准并没有开放获取USB数据包延迟的接口。“测试”回报率的方法就是对循环获取鼠标数据的头尾进行计时,耗费时间的倒数就算做回报率Hz。作为一个非实时的抢先式分时操作系统,Windows下根本不能保证程序代码执行的时间,Windows下任何应用程序代码的执行都有操作系统上的延迟。我开了两个MMR,对同一个Mousekey测出来1个回报率是300Hz,另一个是400Hz,我只能说鼠标回报率必然大于400Hz。
如果快速挥动鼠标,记录下的数据中有一部接近了1000Hz(而不是少数几个突变值),我就可以认为鼠标运行在1000Hz回报率下。但如果相对回报率进行测试,我只能说,原始数据就是不可靠的,更妄论测试了。 |