如果您有兴趣,也会询问一个非常类似的问题here on SO,但是我们将看到该问题的接受答案并非总是如此(并且从未如此应用程序使用模式)。FileStream在应用程序冷启动时速度很慢
性能确定代码由FileStream构造函数(打开文件)和SHA1哈希(.Net框架实现)组成。该代码几乎是我在上面链接到的问题中提出的C#版本。
案例1:应用程序第一次或第N次启动,但具有不同的目标文件集。现在通知应用程序计算以前从未访问过的文件的散列值。
- 〜50ms的
- 80%的FileStream构造
- 18%哈希计算
案例2:应用程序现在已经完全终止,并重新开始,要计算在相同的散列files:
- 〜8ms
- 90%哈希计算
- 8%的FileStream构造
问题
我的应用程序始终是在使用案例1。它永远不会被要求重新计算曾经访问过的文件的散列值。
所以我的速度决定步骤是FileStream构造函数!我能做些什么来加速这个用例?
谢谢。
P.S.统计使用JetBrains分析器收集。
我看到完全相同的行为的PInvoke
CreateFile
。使用ReadAllBytes和计算散列需要很短的时间,但在内存上可能会很糟糕(取决于文件的大小)。所以我试图通过一个FileStream到MD5的computehash($流)并看到完全不可接受的结果。结果时间差异在数量级... – thepip3r 2014-03-28 19:29:04