Как я могу оптимизировать свой цикл «Foreach» для более эффективного чтения и обработки каждой строки текстового файла вC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу оптимизировать свой цикл «Foreach» для более эффективного чтения и обработки каждой строки текстового файла в

Сообщение Anonymous »

У меня есть код C#, который считывает файл TXT, обрабатывает каждую строку и впоследствии вставляет документы в базу данных MongoDB. Поскольку файл содержит много строк (приблизительно 70 тысяч), как чтение всех строк, так и вставка все в базу данных занимает слишком много времени. To try to optimize this process, I attempted:
  • Using bulkWrite to speed up the database I/O operations;
  • Transforming the bulkWrite into an async task, so that the next batch can be populated while the previous one is still being inserted;
After these changes, Ядро моего кода настроена аналогично: < /p>

Код: Выделить всё

foreach (string row in File.ReadLines(newFilePath))
{
var contents = row.Split('|');
switch (contents[0])
{
case "02":
{
// Line processing for variable population
var bob = new BsonDocument{//some bson fields}
insertProceeds.Add(new InsertOneModel(bob));
}
break;
case "03":
{
// Line processing for variable population
var bob = new BsonDocument{//some bson fields}
insertProceeds.Add(new InsertOneModel(bob));
}
break;
}
if (insertProceeds.Count >= 500 )
{
if (bulkInsert != null)
bulkInsert.Wait();
bulkInsert = _variables.context_.BulkWriteInsertEQProceeds(insertProceeds);
insertProceeds = new List();
}
};
if (insertProceeds.Count > 0 || deleteProceeds.Count > 0)
{
_variables.context_.BulkWriteInsertEQProceeds(insertProceeds);
}
Я прочитал некоторую информацию о реализации параллелизма в циклах, но я не совсем понял, в каких случаях я должен создать одновременную сумку вместо списка (независимо от того, должен ли я преобразовать все списки - как для чтения, так и для редактирования - в одновременную сумку или только списки, которые редактируются во время манипулирования линейными), и если существуют другие параметры, которые должны быть уравновешены для оптимизации, чтобы оптимизировать эффективность. /> Помимо проблемы параллелизма, есть ли что -нибудь еще, что можно сделать, чтобы сделать это быстрее? Запустив код в режиме отладки, я заметил несоответствие за время, необходимое для заполнения списка, используемого в объеме, который иногда происходит через 625 мс, а в других случаях занимает более 10000 мс. Есть ли способ уменьшить эти колебания?

Подробнее здесь: https://stackoverflow.com/questions/795 ... a-text-fil
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как оптимизировать потоковую передачу Spark Structured с помощью Delta Table для эффективного сбора данных?
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Оптимизировать цикл foreach в laravel
    Anonymous » » в форуме Php
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как узнать количество вкладок в начале каждой строки текстового файла?
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Цикл foreach добавляет повторяющиеся строки в таблицу? [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать этот код foreach в Parallel.ForEach?
    Anonymous » » в форуме C#
    0 Ответы
    143 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»