3

下午好,

我从几年前继承了一些 C# 代码。我已经将它重构为异步的。为了评估我的更改对 CPU 性能的影响,我使用Process Explorer大致观察了我的应用程序在做什么。令我惊讶的是,它似乎正在执行 Process Explorer 报告为 I/O 的操作。通常,这与磁盘 I/O 或网络 I/O 有关。根据我对代码的了解,我无法确定对这两个 I/O 源中的任何一个的显式调用。

我的问题是:识别哪段代码导致 I/O 的最佳方法是什么?我们使用JetBrains 的dotTrace来分析我们的应用程序,但据我所知,它只处理 CPU 和内存性能。

在此先感谢您的任何指点。

问候,

埃里克。

4

4 回答 4

5

进程监视器可能是您的答案。有关详细信息,请参阅以下 StackOverflow 问题。

如何配置文件 I/O?

基于该答案,您可以在解决方案中搜索使用 Process Monitor 找到的任何常用读取或写入文件的文件名。

于 2010-11-03T21:43:46.743 回答
2

如果需要大量时间,stackshot 方法(也称为随机暂停)会找到它

于 2010-11-03T22:04:32.263 回答
1

如果 I/O 代码是托管的,您可以加载 .net 框架的符号并在关键函数(例如FileStream构造函数等)中设置断点

它涉及一些猜测工作,但如果你成功了,它可以提供信息。

于 2010-11-03T21:44:55.900 回答
0

除了进程监视器,我发现 Win7 上的资源监视器(我认为在 Vista 上的“性能和可靠性”下也可用)对于诊断与 I/O 相关的减速非常有用。切换到磁盘视图并按读/写或总计排序(仅限 win7)。还要留意出现的文件列表。

于 2010-11-03T22:26:39.647 回答