并发程序效率和CPU线程数

时间:2011-03-25 11:47:04

标签: multithreading scala concurrency cpu

嘿伙计们我正在研究Scala中的并发程序,我正在运行一些测试以检查效率,但我似乎得到了一些非常奇怪的数字。

在每次测试中,我都会增加“工人”或流程的数量。我希望能够发现运行时间的增加,因为这些过程从1增加到通信开销和竞争条件足够高以取消它的程度。例如,我希望看到类似的东西:

进程------ 1 ------ 2 ------ 3 ------ 4 ------ 5 ------ 6 ---- - 7

运行时间(秒)---- 3 ------- 2.5 ------- 2 ------- 1.5 ------- 2 ------ - 2.5 ------- 3

在任何情况下,我想问的是,是否有人知道英特尔酷睿i5-430M处理器可以容纳多少线程。我知道它通常有EDIT:2个内核和4个线程。这是否意味着在产生5个或更多进程后性能应该开始变差?像上面的例子一样?

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:4)

使用Runtime.getRuntime()。availableProcessors()。通常,对于CPU密集型应用程序,使用更多线程比使用可用内核/ CPU数量没有任何好处。但是,如果某些线程在IO操作中阻塞,例如,您可以从拥有更多线程中受益。

请注意,只要有可能,您应该使用java.util.concurrent库,而不是编写自己的并行化/并发代码。

答案 1 :(得分:0)

http://ark.intel.com/Product.aspx?id=43537

英特尔的这一规范称核心数量为2,线程数量为4。