AsParallel: имеет ли смысл небольшое количество элементов в контейнере? - PullRequest
1 голос
/ 22 сентября 2010
public class ReplacementService : IReplacementService
{
    public List<int> GetTeamReplacementWeight(int iTeamId)
    {
        IEnumerable<TeamReplacementGroup> groups = TeamReplacementGroup.GetTeamGroups(iTeamId);
        List<int> weights= groups
            .Select(group => group.GetWeight())
            .AsParallel()
            .ToList();

        return weights;
    }
}

Операция 'GetWeight' относительно мала (для 1 объекта она может выполняться не более 1 мс).

Имеет ли смысл использовать «AsParallel», если размер коллекции находится в диапазоне 3-8 элементов?Я бы определенно использовал его для последовательностей, содержащих более 100 элементов, но для небольших ...

Меня беспокоит то, что затраты на создание потоков и ожидание их завершения с последующим составлением результатов в один массив потребуют больше ресурсовтогда возможная польза от использования различных тем.

Как вы думаете, мое беспокойство ценно?

Любые мысли приветствуются!

1 Ответ

1 голос
/ 24 октября 2010

Ваша проблема звучит обоснованно.Вы могли бы сделать несколько тестов / тестов, чтобы увидеть наверняка? Здесь - это ресурс от Microsoft.

...