【问题标题】:Is AsParallel() good practice in a web environment?AsParallel() 在 Web 环境中是好的做法吗?
【发布时间】:2010-05-03 14:44:55
【问题描述】:

我毫不怀疑,对于客户端应用程序,AsParallel() 将带来一些开箱即用的性能提升。但是,如果我要在 Web 环境中使用它会怎样。假设我有一个小部件框架,它遍历所有小部件以获取它们的数据并渲染输出。这会并行化吗?

我确实对在这种情况下使用 AsParallel() 有疑问。如果我的站点有大量访问者,IIS 不是要使用多个线程来处理所有请求吗?一段时间后不会出现锁定问题,或者线程会因为所有处理器都在使用中而死亡吗?

只是一个想法,你怎么看?

【问题讨论】:

标签: c# .net asp.net-mvc iis


【解决方案1】:

我对使用有疑问 AsParallel() 在这种情况下。如果什么 我有大量的访客 我的网站,IIS 不会使用 多个线程来处理所有 请求?

但是,as AsParallel() 选项将(可能)使用多个线程来循环该请求的集合中的每个项目。它可能会降低每个使用它的请求的响应时间。很难说它是帮助还是阻碍你,这取决于对象集合的大小等。说实话,你必须尝试一下才能看到。

不会吧 之后出现的锁定问题 while,或线程死亡,因为所有 处理器正在使用中?

很难说。这取决于当时有多少服务器正在使用。如果您将服务器固定在 99%,您可能会遇到问题(但话又说回来,使用 AsParallel() 选项很可能是您最不必担心的问题。)

【讨论】:

  • 好的,这证实了我对这个问题的怀疑。我计划进行一些负载测试,但这只是为了向我的同事证明我的观点。
【解决方案2】:

我实际上会测试一下 AsParallel 是否会为您带来任何收益。在我针对一些代码运行的性能测试中,在简单到中等的情况下,使用 AsParallel 并没有获得真正的性能优势(事实上,由于创建线程和编组值的额外开销,它实际上更糟)。

此外,根据线程的创建方式,您可以使用 ASP.NET 线程池中的更多线程而不是其他线程。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2015-03-16
    • 2016-04-13
    • 2019-04-06
    • 1970-01-01
    • 2013-09-04
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多