C# 中讀取大型文字檔案:File.ReadLines()
與 File.ReadAllLines()
的效能對比
File.ReadLines()
和 File.ReadAllLines()
都是 C# 中用來讀取文字檔案的方法,但其效能差異顯著。
File.ReadAllLines()
File.ReadAllLines()
會將整個檔案一次讀入內存,然後傳回一個字串數組。對於小文件,此方法效率很高,但處理大文件時則有問題。隨著檔案大小的增加,讀取和處理整個檔案所需的時間會顯著增加。此外,File.ReadAllLines()
會消耗大量內存,尤其是在處理 GB 級檔案時。
File.ReadLines()
File.ReadLines()
透過延遲載入解決了 File.ReadAllLines()
的限制。它不會一次性將整個文件讀入內存,而是返回一個 IEnumerable<string>
,允許您根據需要迭代文件的每一行。這種方法減少了記憶體佔用,並提高了處理大檔案的效能。
效能比較
基準測試表明,對於大型文件,File.ReadLines()
的性能優於 File.ReadAllLines()
。隨著檔案大小的增加,這種差異會更加明顯。例如,使用 File.ReadAllLines()
讀取 100 MB 的檔案可能需要幾秒鐘,而 File.ReadLines()
可以在不到一秒鐘內完成任務。
範例用法
使用 File.ReadLines()
讀取檔案:
<code class="language-csharp">using System.IO; string path = "C:\mytxt.txt"; foreach (var line in File.ReadLines(path)) { // 处理每一行 }</code>
使用 File.ReadAllLines()
讀取檔案:
<code class="language-csharp">using System.IO; string path = "C:\mytxt.txt"; string[] lines = File.ReadAllLines(path); // 处理所有行</code>
結論
對於大型文字文件,File.ReadLines()
比 File.ReadAllLines()
具有顯著的效能優勢。透過延遲加載,File.ReadLines()
減少了記憶體消耗並提高了處理速度,同時不會犧牲效率。
以上是`File.ReadLines()` 與 `File.ReadAllLines()`:哪一個最適合在 C# 中讀取大型文字檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!