Как оптимизировать этот кусок кода ? (чтение из файла) - 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д