FileStream在应用程序冷启动时非常慢

Ale*_*x K 10 .net c# windows performance hard-drive

如果你感兴趣的话,也会在这里提出一个非常类似的问题,但正如我们将会看到那个问题的接受答案并非总是如此(我的应用程序使用模式从来都不是这样).

性能确定代码由FileStream构造函数(用于打开文件)和SHA1哈希(.Net框架实现)组成.代码几乎是我在上面链接的问题中提到的C#版本.

情况1:应用程序第一次或第N次启动,但设置了不同的目标文件.现在告诉应用程序计算之前从未访问过的文件的哈希值.

  • 〜50ms的
  • 80%的FileStream构造函数
  • 18%的哈希计算

案例2:应用程序现已完全终止,并再次启动,要求计算相同文件的哈希值:

  • 〜8ms的
  • 90%的哈希计算
  • 8%FileStream构造函数

问题
我的应用程序始终在使用案例1.永远不会要求它重新计算已经访问过一次的文件的哈希值.

所以我的速率决定步骤是FileStream Constructor!有什么办法可以加速这个用例吗?

谢谢.

使用JetBrains分析器收集PS统计数据.

Joe*_*Joe 1

文件系统和/或磁盘控制器将缓存最近访问的文件/扇区。

决定速率的步骤是读取文件,而不是构造对象FileStream,当数据在缓存中时,第二次运行会明显更快,这是完全正常的。