При записи около 200 300 тыс. Больших двоичных объектов в хранилище больших двоичных объектов с помощью Task.WhenAll (Список) записи зависают / занимают значительно больше времени, чем выполнение каждого по порядку.
Я запускаю процесс в приложении-функции.
Не работает
private async Task WriteToBlobAsync(List<DataSeries> allData)
{
int blobCount = 0;
List<Task> blobWriteTasks = new List<Task>();
foreach(DataSeries series in allData)
{
blobCount++;
string seriesInJson = JsonConvert.SerializeObject(series);
blobWriteTasks.Add(_destinationBlobStore.WriteBlobAsync(seriesInJson, series.SaveName));
//await _destinationBlobStore.WriteBlobAsync(seriesInJson, series.SaveName);
if (blobCount % 100 == 0)
{
_flightSummaryDoc.AddLog($"{blobCount} Blobs Complete");
_log.Info($"{blobCount} Blobs Complete");
}
}
await Task.WhenAll(blobWriteTasks.ToArray());
}
Работает значительно быстрее (но не должно)
private async Task WriteToBlobAsync(List<DataSeries> allData)
{
int blobCount = 0;
List<Task> blobWriteTasks = new List<Task>();
foreach(DataSeries series in allData)
{
blobCount++;
string seriesInJson = JsonConvert.SerializeObject(series);
//blobWriteTasks.Add(_destinationBlobStore.WriteBlobAsync(seriesInJson,series.SaveName));
await _destinationBlobStore.WriteBlobAsync(seriesInJson, series.SaveName);
if(blobCount % 100 == 0)
{
_flightSummaryDoc.AddLog($"{blobCount} Blobs Complete");
_log.Info($"{blobCount} Blobs Complete");
}
}
//await Task.WhenAll(blobWriteTasks.ToArray());
}