大型C++工程项目,都会面临编译耗时较长的问题。不管是开发调试迭代、准入测试,亦或是持续集成阶段,编译行为无处不在,降低编译时间对提高研发效率来说具有非常重要意义。
一、背景
美团搜索与NLP部为公司提供基础的搜索平台服务,出于性能的考虑,底层的基础服务通过C++语言实现,其中我们负责的深度查询理解服务(Deep Query Understanding,下文简称DQU)也面临着编译耗时较长这个问题,整个服务代码在优化前编译时间需要二十分钟左右(32核机器并行编译),已经影响到了团队开发迭代的效率。
在这样的背景下,我们针对DQU服务的编译问题进行了专项优化。在这个过程中,我们也积累了一些优化的知识和经验,在这里分享给大家。
二、编译原理及分析
2.1 编译原理介绍
为了更好地理解编译优化方案,在介绍优化方案之前,我们先简单介绍一下编译原理,通常我们在进行C++开发时,编译的过程主要包含下面四个步骤: