【发布时间】:2012-01-31 16:04:28
【问题描述】:
C++ STL 算法是否在底层使用 CPU 的多核以获得更快的性能?如果不, 是否有任何推荐的库来执行 STL 的功能,但具有多个内核,例如使用 OpenMP?或者在编译期间是否可以指定任何开关,使用 gcc 指示 STL 使用多个内核
编辑:我在带有 gcc 4.4 的 Ubuntu 10.10 上使用 Intel Core i7 960 处理器
【问题讨论】:
-
根据哪个实现?在哪个平台上?你知道代码能做的最好的事情就是多线程吗?由操作系统分配给内核。
-
没有什么可以阻止他们使用多个内核,但这取决于库提供者。由于它会使代码变得非常复杂,而不会使最常见的用例受益,我猜没有人会尝试它。
-
确实......也许 OP 应该指定一个他认为多核会神奇地使标准或 STL 算法“更快”的情况。
-
一般来说不会,因为大多数 STL 算法最终都会调用大多数类型的用户代码,并且不要求用户代码可以从多个线程或同时调用。
-
@smilingbuddha CPU 和操作系统也是如此,据我所知,一些旧操作系统不能使用多线程功能。
标签: c++ multithreading stl