提升Visual Studio 2012的响应能力
jopen 12年前
<p> 微软开发经理 Eric Knox 最近发表了一篇文章,其中提供了对 VS2012 编辑性能所做出的内部改善的深度观点。 Knox 的团队改进了他们的方法,不仅仅使用了 PerfWatson,还结合使用了一种叫做即时延迟跟踪器(Immdiate Delay Tracker,IDT)的新工具。</p> <p lang="zxx">PerfWatson 收集了“迷你的堆信息,让微软可以确定在一天中的特定时间点,运行了哪些 Visual Studio 的代码”。 因为工程师想要基于每次击键来监控 VS 的性能,他们把 IDT 设计为“更细粒度的度量系统”,它使用了 <a href="/misc/goto?guid=4958346526339799179">Event Tracing for Windows</a>(ETW)。</p> <blockquote> <p lang="zxx">ETW 是一种操作系统提供的通用目的、高速的跟踪工具。它使用了内核实现的缓存和日志机制,从而为用户态应用程序和内核态设备驱动所引发的事件都提供了跟踪机制。此外,ETW 让你可以动态地启用和禁用日志功能,使得在生产环境中执行详细跟踪更容易,而不需要重启操作系统或者应用程序。</p> </blockquote> <p lang="zxx"> 据 Knox 所说,基于 ETW 的方法的优势在于,“团队不会像 PerfWatson 一样使用单一的栈,而是每毫秒都会获得调用栈,然后聚合分析栈的集合,而不是单一时间点的数据。” 然后,使用 VS 的工程师可以获得有用的性能信息,同时最小化观察程序的影响。 Knox 的团队监控了微软的内部 VS 用户,实现了修正之后,记录了以下获得的性能数据:</p> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top"> <p>Visual Studio 2010</p> </td> <td valign="top"> <p>当前</p> </td> </tr> <tr> <td valign="top" rowspan="3"> <p>C#</p> </td> <td valign="top"> <p>50毫秒以上的按键</p> </td> <td valign="top"> <p>15. 05%</p> </td> <td valign="top"> <p>7. 87%</p> </td> </tr> <tr> <td valign="top"> <p>100毫秒以上的按键</p> </td> <td valign="top"> <p>10. 26%</p> </td> <td valign="top"> <p>0. 62%</p> </td> </tr> <tr> <td valign="top"> <p>200毫秒以上的按键</p> </td> <td valign="top"> <p>1. 50%</p> </td> <td valign="top"> <p>0. 06%</p> </td> </tr> <tr> <td valign="top" rowspan="3"> <p>C++</p> </td> <td valign="top"> <p>50毫秒以上的按键</p> </td> <td valign="top"> <p>11. 85%</p> </td> <td valign="top"> <p>0. 48%</p> </td> </tr> <tr> <td valign="top"> <p>100毫秒以上的按键</p> </td> <td valign="top"> <p>7. 88%</p> </td> <td valign="top"> <p>0. 20%</p> </td> </tr> <tr> <td valign="top"> <p>200毫秒以上的按键</p> </td> <td valign="top"> <p>6. 85%</p> </td> <td valign="top"> <p>0. 07%</p> </td> </tr> <tr> <td valign="top" rowspan="3"> <p>VB</p> </td> <td valign="top"> <p>50毫秒以上的按键</p> </td> <td valign="top"> <p>0. 83%</p> </td> <td valign="top"> <p>0. 60%</p> </td> </tr> <tr> <td valign="top"> <p>100毫秒以上的按键</p> </td> <td valign="top"> <p>0. 13%</p> </td> <td valign="top"> <p>0. 06%</p> </td> </tr> <tr> <td valign="top"> <p>200毫秒以上的按键</p> </td> <td valign="top"> <p>0. 06%</p> </td> <td valign="top"> <p>0. 06%</p> </td> </tr> </tbody> </table> <p> 由于 VS 2012 RC<a href="/misc/goto?guid=4958342578622860990">已经发布</a>,读者可以自己使用产品,并判断这些变化是否显著。</p> <p> <strong>查看英文原文:</strong><a href="/misc/goto?guid=4958346527883540033">Improving Responsiveness in Visual Studio 2012</a></p> <div id="come_from"> 来自: <a id="link_source2" href="/misc/goto?guid=4958346528682936725" target="_blank">InfoQ</a> </div>