繁体   English   中英

如何在我的应用程序中找出导致I / O的原因?

[英]how to find out what is causing I/O in my application?

下午好,

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

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

提前感谢任何指针。

问候,

埃里克。

Process Monitor可能是您的答案。 有关更多信息,请参阅以下StackOverflow问题。

如何配置文件I / O?

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

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

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

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

除了Process Monitor之外,我发现Win7上的资源监视器(在Vista上的“性能和可靠性”下也可用)对于诊断与I / O相关的减速非常有用。 切换到磁盘视图并按读/写或总计排序(仅限win7)。 另请注意显示的文件列表。

暂无
暂无

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

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