AsParallel()是Web环境中的良好实践吗?

时间:2010-05-03 14:44:56

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

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

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

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

2 个答案:

答案 0 :(得分:4)

  

对使用有疑问   在这种情况下AsParallel()。如果   我有很多游客   我的网站,不是IIS将要使用   多个线程来处理所有   请求?

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

  

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

很难说。这取决于当时使用的服务器数量。如果您将服务器固定在99%,那么您可能会遇到问题(但是再次使用AsParallel()选项很可能是您最不担心的问题。)

答案 1 :(得分:1)

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

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