linux - 如何加快 SMP 机器上的编译过程?
问题描述
在 SMP 机器上加速编译过程背后的核心是什么?
解决方案
通常,编译器和链接器之类的东西本身在使用多个 CPU 方面确实很糟糕。
然而; 通常一个大项目会被分解成许多文件,这些文件分别编译然后链接。例如; 使用 16 个 CPU,您可以毫不费力地并行编译 16 个单独的文件(然后链接所有目标文件)并更快地构建项目(即使编译器的每个实例本身只使用一个 CPU)。
获得额外奖励;有时编译器会停止(例如,必须等待磁盘 IO 读取源文件或标头或其他东西)。使用更多进程(并行编译更多文件)意味着当一个进程/编译器停止时,其他进程可能能够继续,因此 CPU 空闲的可能性更小(什么都不做,也不能帮助项目更快地构建)。
在实践中; 这通常最终受到控制建筑物的任何控制。例如,如果您make
用来确定需要编译哪些部分,那么您可以make -j=16
用来告诉实用程序尝试并行运行 16 个作业。
推荐阅读
- ios - 如何在计算器应用程序中管理计数优先级计算?(迅速)
- javascript - 循环遍历Javascript中的对象列表时如何创建新对象?
- python - Python打印列表元素
- r - 生成一个总和为 1 的值向量,但元素应该近似但不完全一致
- android - 如何通过 BLE 100 字节做广告?
- python - 如何从python中的字符串中删除每个元素?
- ios - 删除 UIAlertController 上文本字段周围的边框
- html - 如何在未指定高度的情况下保持 SVG 线与父 div 相同的高度?
- docker - 在 docker 中禁用 redis 持久性
- php - PHPSeclib Proxy send username and password as arguments