我毫不怀疑,对于客户端应用程序,AsParallel()将带来一些开箱即用的性能提升。但是如果我在网络环境中使用它会怎么样呢。假设我有一个小部件框架,它遍历所有小部件以获取其数据并呈现输出。这会很好地并行化吗?
我确实怀疑在这种情况下使用AsParallel()。如果我的网站有大量访问者,IIS不会使用多个线程来处理所有请求,该怎么办?一段时间后是否会出现锁定问题,或者因为所有处理器都在使用而导致线程死亡?
这只是一个想法,你怎么看待这个?
答案 0 :(得分:4)
对使用有疑问 在这种情况下AsParallel()。如果 我有很多游客 我的网站,不是IIS将要使用 多个线程来处理所有 请求?
但是,as AsParallel()选项将(可能)使用多个线程来循环遍历该请求的集合中的每个项目。它可能会降低每个使用它的请求的响应时间。很难说它是否有助于或阻碍你,取决于对象集合大小等。说实话,你必须尝试一下才能看到。
不会有 在a之后出现锁定问题 虽然,或因为所有线程而死亡 处理器正在使用中?
很难说。这取决于当时使用的服务器数量。如果您将服务器固定在99%,那么您可能会遇到问题(但是再次使用AsParallel()选项很可能是您最不担心的问题。)
答案 1 :(得分:1)
我实际上会测试AsParallel是否会获得任何收益。在性能测试中,我遇到了一些代码,在简单到中等的情况下,使用AsParallel没有获得真正的性能优势(实际上,由于创建线程和编组值的额外开销,实际上更糟糕)。
此外,根据线程的创建方式,您可以使用ASP.NET线程池中的更多线程而不是其他线程。