[英]Profiling IO Bound C# Applications
如何配置执行大量IO的C#应用程序
我已经尝试过ANTS和JetBrains,但它们似乎不适用于IO绑定应用程序,而是报告CPU密集型任务
Visual Studio 2010中的Concurrency Visualizer可以帮助识别存在重大IO瓶颈的区域。
“线程视图”显示应用程序中所有线程的时间轴,颜色表示不同类型的活动。 线程在IO上阻塞时会显示紫色(例如文件,网络等)。 如果单击其中一个段,您将看到线程在IO上阻塞的调用堆栈。 在下图中,选择了同步(红色)段,堆栈显示在“当前堆栈”面板中。
还有代表每个磁盘的通道,它们将显示读/写,单击其中一个段将显示该段所代表的文件操作。
例如,
时间线下方是一些报告,您可以通过单击“可见时间轴配置文件”中的项目来访问这些报告。 它们将显示可见时间轴内各种活动的聚合堆栈,因此您可以看到IO上大多数阻塞发生的堆栈。 同样,“文件操作”报告将显示可见时间轴中的读/写。
“文件操作”报告如下所示:
我发现区分两个目标很有用 - 只是测量,而不是实际定位代码中的瓶颈。
对于后者,我发现这种技术最有效。
我的大部分工作都是在一个大型的C#应用程序中,并且随着人们工作性能问题总是蔓延 - 有时是I / O限制,有时不是。 无论如何,该方法立即找到它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.