在某專案中,主要目標是對許多文件作「搜尋/插入/移除」
為了繞開文字編碼的判斷錯誤,我使用List<byte>來讀取檔案,
必須實作一個這樣的Method:
void Replace(byte[] oldArray, byte[] newArray, int startIndex, int count);
由於.NET中的List<>類別並沒有Replace函式,因此急將就使用:
List.Items.RemoveRange(startIndex, count);
List.Items.InsertRange(startIndex, count);
爾後發現這兩method做成的Replace()效能實在太差
在文件很大時作重複操作,甚至會造成DeadLock()的Exception問題。
使用使用Encoding.GetString()轉成字串,
再用字串的Replace()取替代,大大減少了效能損耗。
至於List的RemoveRange/InsertRange為何那麼損耗能,
可能得查看它的內部實作code才知道。
No comments:
Post a Comment