Как оптимизировать этот кусок кода ? (чтение из файла) - C#

Узнай цену своей работы

Формулировка задачи:

Добрый вечер ! Имеются 50 тыс. файлов, общим размером ~ 30ГБ. Имеется кусок кода, который считывает каждый файл в поток, а затем присваивает строковой переменной первые 77 строк из каждого файла.
string xml = string.Empty;
            using (System.IO.StreamReader str = new System.IO.StreamReader(filepath, Encoding.Default))
            {
                for (int i = 0; i < 78; ++i) // Считываем из каждого файла первые 77 строк в строку xml.
                {
                    xml += str.ReadLine();
                }
            }
Далее я строку xml обрабатываю регексами и вытаскиваю нужную мне информацию, но это не важно, так как этот процесс занимает лишь 5-10% времени. В общем, 30 ГБ файлов он считывает примерно за 18 минут. Прошу помощи у экспертов, как можно оптимизировать считывание из файла ? Читал про отображение файла в память (MemoryMappedFile), но не нашёл понятных мне примеров. Заранее спасибо за оказанную помощь !

Решение задачи: «Как оптимизировать этот кусок кода ? (чтение из файла)»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Diagnostics;
namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            List<String> list = new List<string>();
            String[] temp = new String[77];
            Stopwatch sw = new Stopwatch();
            sw.Start();
            System.IO.StreamReader str;
            for (int i = 0; i < 5000; i++)
            {
                using (str = new System.IO.StreamReader("1.xls", Encoding.Default))
                { 
                    for (int j = 0; j < 77; j++) // Считываем из каждого файла первые 77 строк в строку xml.
                    {
                        temp[j] = str.ReadLine();
                    }
                    list.Add(String.Join("", temp));
                }
            }
            sw.Stop();
            Console.WriteLine(sw.Elapsed);
            Console.ReadLine();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.714 из 5