【发布时间】:2011-05-19 22:07:05
【问题描述】:
我正在做一个网络爬虫并使用线程来下载页面。
我的程序性能的第一个限制因素是带宽,我永远无法下载它可以获得的更多页面。
第二件事是我感兴趣的。我正在使用线程同时下载许多页面,但是当我创建更多线程时,会发生更多的处理器共享。是否有一些指标/方式/类别的测试来确定理想的线程数是多少,或者在一定数量之后,性能不会改变或降低吗?
【问题讨论】:
-
如果您的应用程序受 CPU 限制,那么该数量非常接近您计算机上的 CPU 数量。但是,I/O 绑定程序(如网络爬虫)最终会大量阻塞 I/O,因此您可能会拥有更多。因此,我必须同意@pst 的评论:运行测试,然后找出适合您环境的理想数字。没有一种很好的方法可以在代码中检测到这一点。 (但是,一旦您知道如何检查“当前平均”带宽,您就可以编写自调整代码。)
标签: java multithreading performance metric