【问题标题】:Convert One Object Type To Another using Parallel programming in c#在 c# 中使用并行编程将一种对象类型转换为另一种对象类型
【发布时间】:2016-05-06 05:35:36
【问题描述】:

我想将一个对象(B)转换为另一种对象(A)类型,并根据与对象 B 无关的一些预定义条件,用一些值填充 A 的一些属性。 我使用了 Convert-all 方法。有用。但是,我的问题是如何使用并行编程,或者使用并行 for-each 转换是否有意义。 除了聚合或计算之外,在 Asp.net MVC 4 应用程序的情况下,我们可以进行并行编程的所有实时场景是什么。

【问题讨论】:

    标签: asp.net-mvc-4 task-parallel-library .net-framework-version


    【解决方案1】:

    您是在寻找解决问题还是在寻找使用并行编程的方法?如果您有很多 CPU 密集型工作要做,例如使用 Parallel.ForEach 可能会有所帮助。如果主要是 IO 绑定工作,请尽可能使用 async/await。

    请参阅Should I always use Parallel.Foreach because more threads MUST speed up everything? 了解更多关于并行性的想法。

    使用并行和/或多线程是有代价的,并且会增加复杂性。在对象转换的情况下,不要使用 TPL 使事情过于复杂,明智地使用它。

    【讨论】:

      【解决方案2】:

      ConvertAll() 最接近的并行是Parallel LINQ:

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

      请注意,即使您的代码可并行化,使其并行运行也可能不会提高性能,因为并行化有一些开销。这意味着上面的代码只有在执行上面的ConvertBToA方法需要比较长的时间时才有意义。

      对于 ASP.NET 尤其如此,因为您通常有许多并行运行的请求,因此使用多个 CPU 内核加速一个请求也会减慢其他请求。

      对于 Asp.net MVC 4 应用程序,我们可以进行并行编程的所有实时场景是什么

      我认为这个问题对于 Stack Overflow 来说太宽泛了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多