如何评测执行大量IO的C#应用程序
我尝试过ANTS和JetBrains,但它们似乎不能很好地处理IO密集型应用程序,而是报告CPU密集型任务
发布于 2011-06-19 23:40:43
Visual Studio2010中的并发可视化工具可以帮助识别重要的IO瓶颈区域。
“线程视图”显示应用程序中所有线程的时间线,用颜色表示不同类型的活动。当线程阻塞IO (例如文件、网络等)时,它将显示为紫色。如果您单击这些段中的一个,您将看到线程阻塞IO的调用堆栈。在下图中,选择了一个同步段(红色),堆栈显示在“当前堆栈”面板中。
还有代表每个磁盘的通道,它们将显示读/写,单击其中一个段将显示该段所代表的文件操作。
例如,

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

有关更多信息,请查看team blog、MSDN或Hazim Shafi的blog或MSDN magazine article。
发布于 2011-06-19 20:48:55
我发现区分两个目标很有用--只是测量,而不是实际定位代码中的瓶颈。
对于后者,我发现this technique是最有效的。
我的大部分工作都是在一个大型C#应用程序中进行的,当人们工作时,性能问题总是悄悄出现--有时是I/O限制,有时不是。无论如何,该方法都会立即找到它们。
https://stackoverflow.com/questions/6401874
复制相似问题