首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >英特尔TBB的scalable_allocator是如何工作的?

英特尔TBB的scalable_allocator是如何工作的?
EN

Stack Overflow用户
提问于 2009-03-18 10:58:35
回答 2查看 22.3K关注 0票数 31

英特尔线程构建块中的tbb::scalable_allocator实际上在引擎盖下做什么?

这肯定是有效的。我只是用它来减少25%的应用程序执行时间(在一个4核系统上,CPU利用率从200%提高到350% ),方法是将单个std::vector<T>改为std::vector<T,tbb::scalable_allocator<T> >。另一方面,在另一个应用程序中,我看到它将已经很大的内存消耗翻了一番,并将东西发送到交换城市。

英特尔自己的文档并没有提供太多信息(例如,在这个常见问题的末尾有一个简短的部分)。有人能告诉我,在我自己挖掘它的代码之前,它使用了哪些技巧吗?

UPDATE:这是我第一次使用TBB3.0,并且看到了我从scalable_allocator获得的最好的加速。将单个vector<int>更改为vector<int,scalable_allocator<int> >可以将某物的运行时从85s降低到35s (Debian,Core2,TBB3.0来自测试)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-19 06:22:33

关于分配器有一篇很好的论文:Intel线程构建块中可扩展多核软件的基础

我有限的经验:我用我的人工智能应用程序的tbb::scalable_allocator重载了全局新/删除。但时间简介几乎没有变化。不过,我没有比较内存的使用情况。

票数 20
EN

Stack Overflow用户

发布于 2017-11-05 15:03:13

您提到的解决方案是针对Intel CPU进行优化的。它结合了特定的CPU机制来提高性能。

不久前,我发现了另一个非常有用的解决方案:用于STL容器的快速C++11分配器。它在VS2017 (~5x)和GCC (~7x)上稍微加快了STL容器的速度。它使用内存池进行元素分配,这使得它对所有的platofrms都非常有效。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/657783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档