V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fuweichin
V2EX  ›  程序员

用自制的鼠标采样率测试程序测了触控板和无线鼠标,一测吓一跳

  •  
  •   fuweichin ·
    FuweiChin · 2022-12-17 10:01:52 +08:00 · 2816 次点击
    这是一个创建于 711 天前的主题,其中的信息可能已经有所发展或是发生改变。
    测试报告:

    ```txt
    笔记本内置触控板( Dell Precision 7520 触控板)
    采样率峰值:100Hz
    平均采样间隔:10ms (抖动稳定在±2.5ms )

    无线鼠标( Dell WM514 无线鼠标)
    采样率峰值:125Hz
    平均采样间隔:8ms (最小间隔低至 1ms~3ms ,最大间隔通常低至 12ms~14ms )
    ```

    看着测试结果,我表示有些难受:

    1. 无线鼠标的电脑端收到的采样间隔抖动很严重
    鼠标发送端应该是以均匀的间隔发送采样的,有线鼠标应该像触控板一样不至于间隔抖动成这样。
    2. 采样率配置不了
    鼠标 /触控板采样率与屏幕刷新率不一致,而且 Windows 系统无法设置。若不对鼠标移动事件的处理函数进行 throttle 则对 60Hz 刷新率的屏幕而言会造成多余的运算,若对其进行 throttle 则造成些许延迟和屏幕丢帧。

    原测试程序采用 HTML+JavaScript 编写,无线鼠标的采样间隔抖动我不敢相信。为了排除 Chrome 浏览器从中作祟的可能,我又用 C#/WinForms 写了一版,测试结果还是那样。

    不测不知道,一测吓一跳!

    求分享 可配置的 mousemove 采样率的鼠标驱动。
    求推荐 采样间隔平稳的有线鼠标。
    9 条回复    2022-12-19 04:56:28 +08:00
    llr8031
        1
    llr8031  
       2022-12-17 10:04:58 +08:00
    罗技游戏鼠标,全系列 1000Hz 起步回报率
    nekota
        2
    nekota  
       2022-12-17 10:12:40 +08:00 via iPhone
    你无线鼠标是蓝牙的? 100Hz 左右的刷新率基本是蓝牙的极限了。有 stutter 可能是旁边有干扰源,或者单纯鼠标不行。要提升就像楼上说的上罗技游戏系列,走 2.4g ,回报率 1000+hz
    fuweichin
        3
    fuweichin  
    OP
       2022-12-17 10:17:23 +08:00
    我期待的鼠标是其采样率与显示器刷新率一致(即支持 60Hz, 120Hz, 144Hz 之类的采样率)且可以像切换显示器刷新率一样切换鼠标采样率。

    P.S. 采样率高非我所需,最好是能刚好喂饱显示器,还得保证接受端的间隔抖动小。

    反面教材: https://appuals.com/mouse-lagging-windows-11/
    LuxChen
        4
    LuxChen  
       2022-12-17 10:22:01 +08:00
    现在的游戏鼠标驱动里面轮询率好像可以 1-1000 随意设置
    maggch97
        5
    maggch97  
       2022-12-17 11:01:03 +08:00 via Android   ❤️ 2
    1000hz 之后,根本没有什么间隔抖动的问题。买一个用一下再看看你的需求是不是还那么奇葩吧。

    金锄头肯定是不存在的
    cnbatch
        6
    cnbatch  
       2022-12-17 21:53:29 +08:00
    游戏鼠标直接自带采样率按钮
    systemcall
        7
    systemcall  
       2022-12-18 00:45:36 +08:00
    @fuweichin #3
    一般的情况下,没什么设备这么设计
    就和手机的触控采样率,一般好点的手机都会做成刷新率的几倍
    fuweichin
        8
    fuweichin  
    OP
       2022-12-19 04:55:14 +08:00 via iPhone
    鼠标在使用高采样率(或称轮询率,回报率)时
    1. 能以更低的延迟及触发 click(mousedown+mouseup)事件,有助于 FPS 游戏点击的响应速度
    2. 能以更高的频率触发 mousemove / drag 事件,
    有助于提高鼠标手写 /绘画的笔触采样密度,但是对于即时渲染显示来说则没有必要,会触发大量无助于显示输出帧率的计算,更费电。

    所以我能想到的解决方法是:必要时,给 mousemove 事件作 throttle 处理,或交由操作系统 /鼠标驱动来做,或交由应用框架来做,或由对采样率有明确需求应用程序来做。

    其实 Firefox 浏览器默认就会对 mousemove 进行 throttle 处理,使得 mousemove 事件触发频率不高于屏幕刷新率。但是万一某些应用程序期望使用高采样率呢?

    我们需要一套 Spec 和一套 API ,比如:规定浏览器默认对 mousemove 事件进行 throttle 使其出发频率不超过屏幕刷新率,并提供 API 让应用程序可以配置偏好的 mousemove 采样频率及区间。当然也可反过来,规定浏览器对 mousemove 事件默认要按原始采样率触发…

    Web 规范完成后,其它应用框架可能会跟进。

    我只是发现问题,期望有人到 WICG 发起提议,编写规范或参与讨论。
    fuweichin
        9
    fuweichin  
    OP
       2022-12-19 04:56:28 +08:00 via iPhone
    手机触控的采样率我也测了,与屏幕刷新率设置是同步的。相对屏幕刷新率事实标准 60Hz ,Android 手机如果开启高刷新率 120Hz ,那么触控的峰值采样率可升到 120Hz ; iOS 手机如果开启低电量模式,那么屏幕刷新率会降到 30Hz ,触控峰值采样率也会降到 30Hz 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4031 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 05:12 · PVG 13:12 · LAX 21:12 · JFK 00:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.