我毫不怀疑,对于客户端应用程序,AsParallel()将带来一些开箱即用的性能提升。但是如果我在网络环境中使用它呢?假设我有一个小部件框架,它可以遍历所有小部件以获取他们的数据和渲染输出。这会平行很好吗?AsParallel()是Web环境中的良好实践吗?
我在这种情况下使用AsParallel()有我的疑虑。如果我的网站有大量访问者,那么IIS不会使用多个线程处理所有请求?一段时间后会不会出现锁定问题,或者因为所有处理器都在使用中而线程死亡?
这只是一个想法,你怎么看待这个?
我毫不怀疑,对于客户端应用程序,AsParallel()将带来一些开箱即用的性能提升。但是如果我在网络环境中使用它呢?假设我有一个小部件框架,它可以遍历所有小部件以获取他们的数据和渲染输出。这会平行很好吗?AsParallel()是Web环境中的良好实践吗?
我在这种情况下使用AsParallel()有我的疑虑。如果我的网站有大量访问者,那么IIS不会使用多个线程处理所有请求?一段时间后会不会出现锁定问题,或者因为所有处理器都在使用中而线程死亡?
这只是一个想法,你怎么看待这个?
确实有我在使用 AsParallel()在这种情况下的疑虑。如果 我有大量的访问者为我的网站 ,是不是IIS要使用 多线程来处理所有 请求?
但是,as asParallel()选项将(可能)使用多个线程来遍历集合中的每个项目以用于该请求。可能会降低每个使用它的请求的响应时间。很难说它是否会帮助或阻碍你,取决于对象集合的大小等。实际上,你必须尝试看看。
是不是有打算一 一段时间后,呈现 锁定问题,或线程死去,因为所有 处理器都在使用?
这很难说。这取决于当时有多少服务器在使用中。如果你以99%的价格与服务器挂钩,你可能会遇到问题(但是再次使用AsParallel()选项很可能是你最担心的问题)。
好吧,这证实了我对这个问题的疑惑。我打算进行一些负载测试,但这只是为了向我的同事证明我的观点。 – 2010-05-04 07:15:19
我实际上会测试看看AsParallel是否会给你带来任何收益。在性能测试中,我运行了一些代码,在简单到中等的情况下,使用AsParallel没有获得真正的性能优势(实际上,由于创建线程和编组值所带来的额外开销,实际上它更糟糕)。
此外,根据线程的创建方式,您可以使用ASP.NET线程池中的更多线程而不是其他线程。
请参阅:http://stackoverflow.com/questions/2220981/concurrency-in-web-applications/2221106#2221106 – Steven 2010-05-03 15:58:51