У меня есть код 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