首页 > 解决方案 > 如何加快 SMP 机器上的编译过程?

问题描述

在 SMP 机器上加速编译过程背后的核心是什么?

标签: linuxlinux-kerneloperating-systemkernel

解决方案


通常,编译器和链接器之类的东西本身在使用多个 CPU 方面确实很糟糕。

然而; 通常一个大项目会被分解成许多文件,这些文件分别编译然后链接。例如; 使用 16 个 CPU,您可以毫不费力地并行编译 16 个单独的文件(然后链接所有目标文件)并更快地构建项目(即使编译器的每个实例本身只使用一个 CPU)。

获得额外奖励;有时编译器会停止(例如,必须等待磁盘 IO 读取源文件或标头或其他东西)。使用更多进程(并行编译更多文件)意味着当一个进程/编译器停止时,其他进程可能能够继续,因此 CPU 空闲的可能性更小(什么都不做,也不能帮助项目更快地构建)。

在实践中; 这通常最终受到控制建筑物的任何控制。例如,如果您make用来确定需要编译哪些部分,那么您可以make -j=16用来告诉实用程序尝试并行运行 16 个作业。


推荐阅读