微软开发经理Eric Knox最近发表了一篇文章,其中提供了对VS2012编辑性能所做出的内部改善的深度观点。 Knox的团队改进了他们的方法,不仅仅使用了PerfWatson,还结合使用了一种叫做即时延迟跟踪器(Immdiate Delay Tracker,IDT)的新工具。
PerfWatson收集了“迷你的堆信息,让微软可以确定在一天中的特定时间点,运行了哪些Visual Studio的代码”。 因为工程师想要基于每次击键来监控VS的性能,他们把IDT设计为“更细粒度的度量系统”,它使用了Event Tracing for Windows(ETW)。
ETW是一种操作系统提供的通用目的、高速的跟踪工具。它使用了内 核实现的缓存和日志机制,从而为用户态应用程序和内核态设备驱动所引发的事件都提供了跟踪机制。此外,ETW让你可以动态地启用和禁用日志功能,使得在生 产环境中执行详细跟踪更容易,而不需要重启操作系统或者应用程序。
据Knox所说,基于ETW的方法的优势在于,“团队不会像 PerfWatson一样使用单一的栈,而是每毫秒都会获得调用栈,然后聚合分析栈的集合,而不是单一时间点的数据。” 然后,使用VS的工程师可以获得有用的性能信息,同时最小化观察程序的影响。 Knox的团队监控了微软的内部VS用户,实现了修正之后,记录了以下获得的性能数据:
Visual Studio 2010
当前
C#
50毫秒以上的按键
15.05%
7.87%
100毫秒以上的按键
10.26%
0.62%
200毫秒以上的按键
1.50%
0.06%
C++
50毫秒以上的按键
11.85%
0.48%
100毫秒以上的按键
7.88%
0.20%
200毫秒以上的按键
6.85%
0.07%
VB
50毫秒以上的按键
0.83%
0.60%
100毫秒以上的按键
0.13%
0.06%
200毫秒以上的按键
0.06%
0.06%
由于VS 2012 RC已经发布,读者可以自己使用产品,并判断这些变化是否显著。