Как оптимизировать этот кусок кода ? (чтение из файла) - C#
Формулировка задачи:
Добрый вечер !
Имеются 50 тыс. файлов, общим размером ~ 30ГБ.
Имеется кусок кода, который считывает каждый файл в поток, а затем присваивает строковой переменной первые 77 строк из каждого файла.
Далее я строку xml обрабатываю регексами и вытаскиваю нужную мне информацию, но это не важно, так как этот процесс занимает лишь 5-10% времени.
В общем, 30 ГБ файлов он считывает примерно за 18 минут.
Прошу помощи у экспертов, как можно оптимизировать считывание из файла ?
Читал про отображение файла в память (MemoryMappedFile), но не нашёл понятных мне примеров.
Заранее спасибо за оказанную помощь !
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();
}
}Решение задачи: «Как оптимизировать этот кусок кода ? (чтение из файла)»
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();
}
}
}