@kerchnet

Как оптимизировать сохранение строк в больших объемах?

private ConcurrentQueue<string> Names= new ConcurrentQueue<string>();


var sourceFile = new OpenFileDialog
            {
                Filter = @"(*.txt)|*.txt",
                RestoreDirectory = true
            };
            if (sourceFile.ShowDialog() != DialogResult.OK)
                return;
            try
            {
                Names = new ConcurrentQueue<string>(File.ReadAllLines(sourceFile.FileName));
            }
            catch (Exception ex)
            {
               MessageBox.Show(ex.Message);
            }


var l = Names.ToList();
                foreach (var s in l)
                {
                    SaveText(@"C:\Windows\Temp\Names\Surname.txt", s);
                }


Слишком долго сохраняет. есть-ли способы оптимизировать на скорость?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
Нет. Разве что ты соберёшь ещё раз все строки в память одним блобом и сохранишь их сразу, а не каждую дописывать в файл.
А так купи SSD если медленно сохраняет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Griboks
@Griboks Куратор тега C#
А у меня строки больше 20 миллиона

Очевидно, пора подключать СУБД.
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Есть обратный метод в классе для записи
#region Медленно потому что по одной строке запись в файл
        var l = Names.ToList();
        foreach (var s in l)
        {
            SaveText(path, s);
        }
        #endregion

        File.WriteAllLines(path, Names); // Быстро и проще
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы