文章插图
4.3 优化效果
我们通过32C、64G内存机器做了编译耗时优化前后的效果对比,统计结果如下:
文章插图
文章插图
4.4 守住优化成果
编译优化是一件“逆水行舟”的事情,开发人员总是倾向于不断增加新的功能、新的库乃至新的框架,而要删除旧代码、旧库、下线旧框架总是困难重重(相信一线开发人员一定深有体会) 。因此,如何守住之前取得的优化成果也是至关重要的 。我们在实践中有以下几点体会:
- 代码审核是困难的(引起编译耗时增加的改动,往往无法通过审核代码直观地发现) 。
- 工具、流程才值得依赖 。
- 关键在于控制增量 。
我们将该种方式制作成脚本工具并引入上线流程,从而能够很清楚的了解每次代码发版带来的编译性能影响,并有效地帮助我们守住前期的优化成果 。
五、总结DQU项目是美团搜索业务环节中重要的一环,该系统需要对接20+RPC、数十个模型、加载超过300个词典,使用内存数十G,日均响应请求超过20亿的大型C++服务 。在业务高速迭代的情况,冗长的编译时间为开发同学带来较大的困扰,一定程度上制约了开发效率 。最终我们通过编译优化分析工具建设,结合采用了通用编译优化加速方案和代码层面的优化,将DQU的编译时间缩短了70%,并通过引CCache等手段,使得本地开发的编译,能够在100s内完成,给开发团队节省了大量的时间 。
在取得阶段性成果之后,我们总结整个问题解决的过程,并沉淀出一些分析方法、工具以及流程规范 。这些工具在后续的开发迭代过程中,能够快速有效地检测新的代码变更带来的编译时间变化,并成为了我们的上线流程检查中的一环检测标准 。这一点与我们以往一次性的或者针对性的编译优化,产生了很大的区别 。毕竟代码的维护是一个持久的过程,系统化的解决这一问题,不只是需要有效的方法和便捷的工具,更需要一个标准化的,规范化的上线流程来保持成果 。希望本文对大家能有所帮助 。
作者简介周磊,识瀚,朱超,王鑫,刘亮,昌术,李超,云森,永超等,均来自美团AI平台搜索与NLP部 。
【C++服务编译耗时优化原理及实践】
推荐阅读
- 聊聊CDN与高性能流媒体服务器的关键技术设计
- Windows服务器及PC漏洞补丁批量自动升级-WSUS
- 如何实现HTTPS服务器
- 服务业结构 服务业管理类
- 深圳瑞吉酒店服务怎么样
- 秒级搭建MySQL数据库服务,太香了
- 盘点c++几种常见的设计模式及具体实现
- CentOS7下安装Emby流媒体服务器
- 从零开始入门K8S| 从Spring Cloud到Kubernetes的微服务迁移实践
- 如何为你的网站构建无服务器NLP聊天机器人