Преобразование одного типа объекта в другой с помощью параллельного программирования в C#

Я хочу преобразовать один объект (B) в другой тип объекта (A) и заполнить некоторые свойства A некоторыми значениями, основанными на некоторых предварительно определенных условиях, не связанных с объектом B. Я использовал метод Convert-all. Оно работает. Но мой вопрос здесь заключается в том, как использовать параллельное программирование, или будет ли целесообразно использовать параллельное для каждого преобразования. За исключением агрегирования или вычисления, какие все сценарии реального времени мы можем использовать для параллельного программирования в случае приложения Asp.net MVC 4.

2 ответа

Вы ищете решение проблемы или ищете способы использовать параллельное программирование? Если у вас много работы с процессором, можно использовать, например, Parallel.ForEach. Если это в основном работа, связанная с вводом-выводом, используйте async/await, если это возможно.

См. Должен ли я всегда использовать Parallel.Foreach, потому что большее количество потоков ДОЛЖНО ускорять все? для большего размышления о параллелизме.

Работа с параллелизмом и / или многопоточностью обходится дорого и увеличивает сложность. В случае преобразования объекта не усложняйте вещи с TPL, используйте это с умом.

Ближайшая параллель эквивалентна ConvertAll() будет параллельным LINQ:

var as = bs.AsParallel().Select(b => ConvertBToA(b)).ToList();

Обратите внимание, что даже когда ваш код распараллелен, выполнение его параллельно может не увеличить производительность, потому что распараллеливание имеет некоторые накладные расходы. Это означает, что приведенный выше код имеет смысл только при выполнении ConvertBToA Метод выше занимает относительно много времени.

Это особенно верно для ASP.NET, потому что обычно у вас много запросов, выполняющихся параллельно, поэтому ускорение одного запроса с использованием нескольких ядер ЦП также замедлит другие запросы.

Каковы все сценарии реального времени мы можем пойти для параллельного программирования в случае приложения Asp.net MVC 4

Я думаю, что этот вопрос слишком широк для переполнения стека.

Другие вопросы по тегам