如果您有興趣,也會詢問一個非常類似的問題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