s*****2 发帖数: 117 | 1 在一个单cpu的计算机下跑程序,
如果这个程序采用多线程并行处理来实现,
或者采用一个线程逐个逐个实现,
哪一个快点?
我觉得在单cpu的情况下,两个的运行速度没啥区别。
不知道对不对?
thanks |
c*******h 发帖数: 1096 | 2 cpu本质上是串行的,所以为了提高速度而用多线程在大多数情况下是白费功夫的
【在 s*****2 的大作中提到】 : 在一个单cpu的计算机下跑程序, : 如果这个程序采用多线程并行处理来实现, : 或者采用一个线程逐个逐个实现, : 哪一个快点? : 我觉得在单cpu的情况下,两个的运行速度没啥区别。 : 不知道对不对? : thanks
|
c******a 发帖数: 600 | 3 单CPU情况下多线程并行处理很可能要慢些,因为有context switch的开销 |
w***g 发帖数: 5958 | 4 如果有I/O的话,那么一个线程block了另一个还可以运行,所以多线程仍然会比单线程
快。
hyperthread技术就是基于这个原理,只不过它是用硬件在单CPU上实现的多线程(对
CPU来说,I/O也包括memory access)。
这个问题跟workload很有关系,需要具体分析。
【在 c******a 的大作中提到】 : 单CPU情况下多线程并行处理很可能要慢些,因为有context switch的开销
|