我想在这里指出另一个工具来追踪你的时间。由于您正在考虑测试应用程序的响应,并且正如有人提到这涉及操作系统的消息,您可以利用 Spy++ 查看这些消息的时间。我将按下空格的输出复制到一个我一直在监听键盘消息的窗口,并打开了所有输出。我在通过扩展坞的 USB 键盘上按了一次空格键并尽快释放。您可以看到上下处理大约需要 0.05 毫秒。
<00001> 00090902 P WM_KEYDOWN nVirtKey:VK_SPACE cRepeat:1 ScanCode:39 fExtended:0 fAltDown:0 fRepeat:0 fUp:0 [wParam:00000020 lParam:00390001 time:1:07:38.116 point:(183, 290)]
<00002> 00090902 P WM_CHAR chCharCode:'32' (32) cRepeat:1 ScanCode:39 fExtended:0 fAltDown:0 fRepeat:0 fUp:0 [wParam:00000020 lParam:00390001 time:1:07:38.116 point:(183, 290)]
<00003> 00090902 P WM_KEYUP nVirtKey:VK_SPACE cRepeat:1 ScanCode:39 fExtended:0 fAltDown:0 fRepeat:1 fUp:1 [wParam:00000020 lParam:C0390001 time:1:07:38.163 point:(183, 290)]
Spy++ 是 Visual Studio 提供的工具。你可以在C:\Program Files\Microsoft Visual Studio XYZ\Common7\Tools\spyxx.exe
我可以确认的 XYZ 为 8、9.0 和 10.0 的位置找到它。
您可以做些什么来进一步测试时间是让 Spy++ 监听键盘命令和 WM_PAINT 或其他东西,以查看程序如何快速响应键盘消息及其 UI 更改。
例如,下面是3+3
已经使用 Calculator 后的干净日志,然后按Enter
。您会看到计算器能够在 KeyDown 和 KeyUp 处理之间的 0.062 毫秒之前计算和显示。
<00001> 00090902 P WM_KEYDOWN nVirtKey:VK_RETURN cRepeat:1 ScanCode:1C fExtended:1 fAltDown:0 fRepeat:0 fUp:0 [wParam:0000000D lParam:011C0001 time:1:19:12.539 point:(179, 283)]
<00002> 00090902 S WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00003> 00090902 R WM_PAINT lResult:00000000
<00004> 00090902 S WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00005> 00090902 R WM_PAINT lResult:00000000
<00006> 00090902 S WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00007> 00090902 R WM_PAINT lResult:00000000
<00008> 00090902 S WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00009> 00090902 R WM_PAINT lResult:00000000
<00010> 00090902 P WM_KEYUP nVirtKey:VK_RETURN cRepeat:1 ScanCode:1C fExtended:1 fAltDown:0 fRepeat:1 fUp:1 [wParam:0000000D lParam:C11C0001 time:1:19:12.601 point:(179, 283)]
编辑- 在 Spy++ 中,我建议转到显示消息选项对话框的日志选项。转到消息选项卡,单击全部清除,选中“键盘”,然后滚动列表框并选择 WM_PAINT。这样你就只有想要的消息,否则你会被它们淹没。