【发布时间】:2011-10-10 16:51:15
【问题描述】:
为什么英特尔线程构建模块 (TBB) parallel_for 的开销如此之大?根据Tutorial.pdf 中的第 3.2.2 节 自动分块,大约需要半毫秒。这是教程中的一个尝试:
注意:通常一个循环需要至少一百万个时钟 parallel_for 循环以提高其性能。例如,一个 在 2 GHz 处理器上至少需要 500 微秒的循环可能 受益于parallel_for。
从我目前所读到的内容来看,TBB 在内部使用线程池(工作线程池)模式,它通过最初仅生成工作线程一次(这需要数百微秒)来防止这种糟糕的开销。
那么花时间呢?使用互斥锁的数据同步不是那么慢吗?此外,TBB 不使用 无锁 数据结构进行同步吗?
【问题讨论】:
标签: c++ lock-free overhead tbb parallel-processing