在 Intel Threading Building Blocks 中,
Intel 自己的文档并没有透露太多信息(例如这个FAQ结尾的一个简短章节)。在我自己查看其代码之前,有人能告诉我它使用了哪些技巧吗?
更新:我第一次使用 TBB 3.0,看到了我迄今为止使用 scalable_allocator 取得的最佳加速效果。只是将一个
tbb::scalable_allocator
到底是怎么工作的呢?它确实非常有效。我曾经只改变一个std::vector<T>
为std::vector<T,tbb::scalable_allocator<T> >
,就将某个应用程序的执行时间缩短了25%(并且在4核系统上看到CPU利用率从约200%提高到350%)。但在另一个应用程序中,它却使内存使用量大增,并将一些东西送入交换空间。Intel 自己的文档并没有透露太多信息(例如这个FAQ结尾的一个简短章节)。在我自己查看其代码之前,有人能告诉我它使用了哪些技巧吗?
更新:我第一次使用 TBB 3.0,看到了我迄今为止使用 scalable_allocator 取得的最佳加速效果。只是将一个
vector<int>
改为vector<int,scalable_allocator<int> >
,就将某个东西的运行时间从85秒减少到35秒(在 Debian Lenny、Core2 和来自测试的 TBB 3.0 上)。
scalable_allocator
,瓶颈消失了,并且预期的扩展性回来了。(机器有40个物理内核)。 - Adam