我想指出另一个追踪时间的工具。由于您正在考虑测试应用程序的响应,并且正如有人提到的那样,这涉及到操作系统的消息,因此您可以利用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更改的键盘消息的响应速度有多快。
例如,下面是在Calcuator中先输入3+3
,然后按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。这样您就只有所需的消息,否则您将被淹没在其中。