我想将一个对象(B)转换为另一个对象(A)类型,并根据与对象B无关的某些预定义条件,使用某些值填充A的某些属性。 我使用了Convert-all方法。有用。但是,我的问题是如何使用并行编程,或者使用并行for-each转换是否有意义。 除了聚合或计算之外,在Asp.net MVC 4应用程序的情况下,我们可以采用并行编程的所有实时场景。
答案 0 :(得分:0)
您是要解决问题还是正在寻找使用并行编程的方法?如果你有很多CPU绑定工作要做,使用Parallel.ForEach例如可以帮助。如果主要是IO绑定工作,请尽可能使用async / await。
有关并行性的更多信息,请参阅Should I always use Parallel.Foreach because more threads MUST speed up everything?。
使用并行和/或多线程需要付出代价并增加复杂性。在对象转换的情况下,不要使用TPL过度复杂化,请明智地使用它。
答案 1 :(得分:0)
与ConvertAll()
等效的最接近的并行是Parallel LINQ:
var as = bs.AsParallel().Select(b => ConvertBToA(b)).ToList();
请注意,即使您的代码可并行化,使其并行运行也不会提高性能,因为并行化会产生一些开销。这意味着只有在执行上述ConvertBToA
方法需要相当长的时间时,上述代码才有意义。
对于ASP.NET尤其如此,因为您通常会有许多请求并行运行,因此使用多个CPU内核加速一个请求也会降低其他请求的速度。
在Asp.net MVC 4应用程序的情况下,我们可以用于并行编程的所有实时场景
我认为这个问题对于Stack Overflow而言过于宽泛。