![]() |
1
2
我真的怀疑你的工作是瓶颈。磁盘只有一个磁头,一次只能读取一个数据流。只要您的线程处理数据的速度达到磁盘所能提供的速度,那么您就没有其他方法可以做到这一点,这将对总体速度产生任何显著的影响。 对于其他类型的任务,您的队列可能会成为一个重要的瓶颈,但对于这个任务,我表示怀疑。记住这里操作的时间尺度。一个简单的操作发生在一个中央处理器内部所需的时间远远少于一纳秒。从主存储器中读取的数据大约需要几十纳秒。像线程切换或同步之类的东西大约需要几百纳秒。磁盘驱动器上的单磁头移动大约需要一毫秒(1000000纳秒)。 |
![]() |
2
1
除了@jerry的答案,您的瓶颈是磁盘系统。如果您有一个RAID阵列,您可能会看到从使用2或3个线程中得到一些适度的改进。 如果必须搜索多个驱动器(注意:物理驱动器,而不是单个物理驱动器上的卷),则可以为每个驱动器使用额外的线程。 |
|
Julia · 矢量中相加为总和S的值的数量 2 年前 |
![]() |
C_Rod · 在模板方法中确定STL容器中项目的数据类型 3 年前 |
![]() |
quantumwell · 将空向量放入std::map() 7 年前 |
![]() |
OutOfBound · 对未初始化内存使用算法的优点 7 年前 |
![]() |
DarthRubik · 在使用列表删除之后,迭代器如何不无效 7 年前 |