下午好,
我从几年前继承了一些C#代码。我已经重构了一点异步。 评估我的更改对CPU性能的影响,我使用Process Explorer来粗略地观察我的应用正在做什么。 令我惊讶的是,它似乎正在进行Process Explorer报告的I / O.通常,这与磁盘I / O或网络I / O有关。 根据我能看到的代码,我无法找出对这两个I / O源中的任何一个的显式调用。
我的问题是: 确定哪个代码段导致I / O的最佳方式是什么? 我们使用JetBrains中的dotTrace来分析我们的应用程序,但是,据我所知,它只处理CPU和内存性能。
提前感谢任何指示。
此致
埃里克。
答案 0 :(得分:5)
Process Monitor可能就是您的答案。有关更多信息,请参阅以下StackOverflow问题。
在此答案的基础上,您可以在解决方案中搜索使用Process Monitor找到的任何常见读取或写入文件的文件名。
答案 1 :(得分:2)
stackshot method,也称为随机暂停,如果需要很长时间,就会找到它。
答案 2 :(得分:1)
如果管理I / O代码,您可以加载.net框架的符号并在关键函数中设置断点(例如FileStream
构造函数等)。
它涉及一些猜测工作,但如果你成功可以提供信息。
答案 3 :(得分:0)
除了Process Monitor之外,我发现Win7上的资源监视器(在Vista上的“性能和可靠性”下也可用)对于诊断与I / O相关的减速非常有用。切换到磁盘视图并按读/写或总计排序(仅限win7)。另请注意出现的文件列表。