【发布时间】:2010-01-06 18:07:14
【问题描述】:
假设我们想尽可能快地编译一个大型项目(比如 GCC 或 Linux 内核)。具有超线程功能的 CPU(比如 Intel Core i7)在启用或禁用超线程的情况下运行编译器的速度是否更快?是否有任何已发布的基准测试?
我对超线程的理解是,每个内核都可以从两个(或多个进程)中选择指令。这通常会使核心更高效,因为功能单元空闲的可能性较小。但是,由于在同一内核上运行的进程共享缓存等资源并且可能相互干扰,因此可能会降低性能。性能是否真正提高取决于工作负载。
那么对于编译器工作负载,性能会提高吗?如果有,多少?
【问题讨论】:
-
我最近没有这方面的经验,但编译不是受 I/O 限制的吗?
-
玩“make -j N”并测量不同N的系统资源?
-
@Nikolai,如果我有一个超线程 CPU 可以玩,我会的。我问这个是为了知道买一个是否值得。
-
@Ken,我的经验正好相反。由于我通常会进行小的更改并经常重新编译,因此所有源通常都在磁盘缓存中。编译时我经常看到 100% 的 CPU 使用率。
标签: performance compilation hyperthreading