Что в данном случаи лучше использовать: Асинхронное или Параллельное программирование?

Задача простая, но столкнулся с проблемой слишком долгого выполнения (30+ минут) Суть задачи пройти по большому кол-ву элементов (60000) в коллеции (List) и с каждым элементом сделать определенное действие (в данном случаи элемент загружается в библиотеку, которая с ним что-то делает)

Вот мой код

for (int i = 0; i < uniqueUserAgents.Count; i++)
{
    var res = Result(uniqueUserAgents[i]);
    dictionaryUserAgents.Add(uniqueUserAgents[i], res.Result);
    Console.WriteLine($"Выполнено {i} из {uniqueUserAgents.Count}");
}

// uniqueUserAgents - кол-во элментов (60000)

public static async Task<Dictionary<string, IAgentField>> Result(string userAgent)
{
    var ua_new = ParsingUserAgentInNewLibraryAsync(userAgent);
    await Task.WhenAll(ua_new);
    return ua_new.Result;
}

public static async Task<Dictionary<string, IAgentField>> ParsingUserAgentInNewLibraryAsync(string userAgent)
{
    var immutableUserAgent = // тут подключение к библиотеки
    var fieldNames = // тут получение информации из библиотеки

    Dictionary<string, IAgentField> fields = new Dictionary<string, IAgentField>();
    foreach (var name in fieldNames)
    {
       fields[name] = immutableUserAgent.Get(name);
    }

    await Task.CompletedTask;

    return fields;
}

Вот, получается, что данный код выполняется слишком долго, поможет ли в данном случаи параллельность? Если нет, то как что Вы могли бы посоветовать для ускорения работы кода?


Ответы (0 шт):