我正在使用下面的代碼來執行工作正常的文件的校驗和。但是當我爲一個大文件生成一個散列時,比如說2 GB,它就很慢。我怎樣才能提高這段代碼的性能?提高SHA-1 ComputeHash的性能
fs = new FileStream(txtFile.Text, FileMode.Open);
formatted = string.Empty;
using (SHA1Managed sha1 = new SHA1Managed())
{
byte[] hash = sha1.ComputeHash(fs);
foreach (byte b in hash)
{
formatted += b.ToString("X2");
}
}
fs.Close();
更新:
系統:
OS:Win 7的64位,CPU:I5 750,RAM:4GB,HDD:7200rpm的
測試:
Test1 = 59.895秒
Test2 = 59.94秒
+1只是爲了試圖改善最重的位的性能,而不是關心格式化是建立在一個相對低效的方式:) –
:)應該可能改變到一個stringbuilder? –
現在,你正在說出自己的+1!如果你經常產生這樣的十六進制字符串,有什麼可以值得的是有一個方法可以做到這一點(對於擴展方法來說是很好的例子)。隨着它可能被用於性能會更加真實的區域,那麼移動StringBuilder(以適當的容量創建)或固定大小的char數組方法會更有價值。 –