繁体   English   中英

分析IO Bound C#应用程序

[英]Profiling IO Bound C# Applications

如何配置执行大量IO的C#应用​​程序

我已经尝试过ANTS和JetBrains,但它们似乎不适用于IO绑定应用程序,而是报告CPU密集型任务

Visual Studio 2010中的Concurrency Visualizer可以帮助识别存在重大IO瓶颈的区域。

“线程视图”显示应用程序中所有线程的时间轴,颜色表示不同类型的活动。 线程在IO上阻塞时会显示紫色(例如文件,网络等)。 如果单击其中一个段,您将看到线程在IO上阻塞的调用堆栈。 在下图中,选择了同步(红色)段,堆栈显示在“当前堆栈”面板中。

还有代表每个磁盘的通道,它们将显示读/写,单击其中一个段将显示该段所代表的文件操作。

例如,

并发可视化器线程视图

时间线下方是一些报告,您可以通过单击“可见时间轴配置文件”中的项目来访问这些报告。 它们将显示可见时间轴内各种活动的聚合堆栈,因此您可以看到IO上大多数阻塞发生的堆栈。 同样,“文件操作”报告将显示可见时间轴中的读/写。

“文件操作”报告如下所示:

并发可视化文件操作

有关更多信息,请查看团队博客MSDN或Hazim Shafi的博客MSDN杂志文章

我发现区分两个目标很有用 - 只是测量,而不是实际定位代码中的瓶颈。

对于后者,我发现这种技术最有效。

我的大部分工作都是在一个大型的C#应用​​程序中,并且随着人们工作性能问题总是蔓延 - 有时是I / O限制,有时不是。 无论如何,该方法立即找到它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM