在“CPPCon 2019”中,谷歌首席软件工程师 Chandler Carruth 的演讲《没有零成本的抽象》向大家展示了抽象与成本的关系。抽象需要运行时间、构建时间和人力成本。他清晰地向大家解释了使用 Arena 内存分配器降低运行时成本,反而导致构建成本增加的原因。他也提到,编译本质上是一个高度输出的分布式系统。但是,首先我们要如何建立这样一个系统的?如何有效地进行分布?如何创建高效的并行构建?欲知详情,请继续阅读…
知己知彼,百战百胜
你的构建时间以哪种度量单位计算?几秒、几分,还是几小时?在几秒钟内完成构建,这是每个程序员梦寐以求的事。正如我们把 WTK 的数据当做唯一有效的代码评审指标一样?,程序员耗费在喝咖啡等待构建完成的时间,也是衡量工作效率的一个有效指标。我希望这个时间不要超过 5 分钟。但该如何实现这个目标?大致有以下两种方法:
- 微观优化
- 宏观优化
微观优化,加速构建
使用 MSBuild 在命令行上执行构建时,你可能看到以下消息:
Building the projects in this solution one at a time. To enable parallel build, please add the “-m” switch.
在此解决方案中一次只能构建一个项目。要启用并行构建,请添加“-m”开关。
MSBuild 并行编译是通过 -m 开关启用的,并且我们可以限定并行构建的进程数量。如果未使用开关,则会收到上述消息;如果在使用 -m 开关时未限定具体的并行进程数值,则 MSBuild 默认设置