Rumah >pembangunan bahagian belakang >C++ >Bagaimana saya boleh mengoptimumkan bacaan fail teks line-by-line di C#?

Bagaimana saya boleh mengoptimumkan bacaan fail teks line-by-line di C#?

DDD
DDDasal
2025-01-29 08:34:11251semak imbas

How Can I Optimize Line-by-Line Text File Reading in C#?

Mengoptimumkan bacaan fail teks line-by-line di C#

Artikel ini meneroka kaedah yang cekap untuk membaca fail teks dengan baris dalam C#. Strategi Pengoptimuman Prestasi dianalisis untuk membantu anda memilih pendekatan terbaik untuk keperluan anda.

Streamreader dengan Buffering Enhanced

Kaedah

menawarkan saiz penampan yang boleh dikonfigurasikan (ingkar hingga 1024 bait). Meningkatkan penampan ini secara dramatik dapat meningkatkan kelajuan baca: StreamReader.ReadLine()

<code class="language-csharp">const int BufferSize = 4096; // Increased buffer size for better performance
using (var fileStream = File.OpenRead(fileName))
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8, true, BufferSize)) {
    string line;
    while ((line = streamReader.ReadLine()) != null)
    {
        // Process the line
    }
}</code>
File.Readlines: Iteration Line Efficial

menyediakan pendekatan yang lebih efisien dan sering lebih cepat untuk meleleh melalui garis: File.ReadLines()

<code class="language-csharp">foreach (var line in File.ReadLines(fileName))
{
    // Process the line
}</code>
file.readalllines: akses rawak, penggunaan memori yang lebih tinggi

Jika anda memerlukan akses rawak ke garisan,

memuatkan keseluruhan fail ke dalam memori. Ini mudah tetapi menggunakan lebih banyak ingatan, menjadikannya kurang sesuai untuk fail yang sangat besar: File.ReadAllLines()

<code class="language-csharp">var lines = File.ReadAllLines(fileName);
for (int i = 0; i < lines.Length; i++)
{
    // Process line at index i
}</code>
Mengelakkan string.split

Menggunakan

untuk menghuraikan baris dari keseluruhan kandungan fail secara amnya kurang cekap daripada kaedah di atas: String.Split()

<code class="language-csharp">// Less efficient - avoid this method if possible
using (var reader = File.OpenText(fileName)) {
    string[] lines = reader.ReadToEnd().Split(new[] { "\r\n", "\n" }, StringSplitOptions.None);
    foreach (string line in lines)
    {
        //Process line
    }
}</code>
Pertimbangan Prestasi

penandaarasan adalah penting untuk menentukan kaedah optimum untuk aplikasi dan saiz fail khusus anda.

sering memberikan keseimbangan penggunaan kelajuan dan memori yang baik. Walau bagaimanapun, menyesuaikan File.ReadLines dalam BufferSize mungkin menghasilkan hasil yang lebih baik untuk senario tertentu. Pertimbangkan kekangan memori anda dan corak akses semasa membuat pilihan anda. StreamReader

Atas ialah kandungan terperinci Bagaimana saya boleh mengoptimumkan bacaan fail teks line-by-line di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn