【Linux】版本编译效率提升探讨之一——写在开动之前

简介: 【Linux】版本编译效率提升探讨之一——写在开动之前
  • 版本编译时间的长短,对开发效率影响比较大,本系列文章将对编译时间这个话题做一阐述。



编译分类及对应场景


全量编译


  • 全量编译,实际上就是下载全代码之后的第一次make;


  • 适用于系统版本的构建、DailyBuild、CI等场景。


增量编译


  • 增量编译,实际上是版本之前已编译过,修改某些文件后的再次编译;


  • 适用于开发人员的开发调试、CI(既可使用全量也可使用增量)等场景。


需要考虑哪些因素


具体需求


  • 编译效率的提升,首先要明确具体的需求、具体的场景,是对某一模块优化还是对整个版本做优化;


  • 全量编译和增量编译的优化的方法论是不同的,对某一模块的策略和对整个版本的策略也是有区别的;


意识问题


  • 以笔者的经验看,项目上对结果的关心远甚于对过程的关心,这种现象实际上是存在很大漏洞的;


  • 曾经笔者做的几次编译优化,或大或小都出了一些问题,事后复盘,发现跟项目管理者的意识不到位有一定关系;


  • 编译优化,事情可大可小,出了问题就是大问题,所以要对编译优化引起足够的重视,不能说把任务扔给开发人员之后,项目就不管了,至少几个层面要关注:


– 需求明确后,要评估大概的工作量(人天)(含后续其他步骤);


– 修改的范围,涉及到的模块及对应功能、设计用例等;


– 修改之后的测试(自动化测试、针对修改的功能测试)


– 是一次合库还是多次合库,如果是多次,中间是否会出版本等;


如何评价


  • 通常对编译速率的考量指标就是时间,比如CI的时间要缩短到xx分钟之内;


  • 但实际上的编译速度和编译服务器配置、CPU的忙闲是挂钩的,有的时候,优化可能在某台服务器上有很大提升,在另一台服务器上可能没什么变化;


  • 这点可能需要项目协调资源的,比如要求在CI服务器上提升,那么测试编译时间要在CI服务器上进行验证;


  • 另外,编译时间受CPU忙闲等因素影响,所以取某一次的时间,意义不大,建议取平均值,这个也是需要CI维护人员配合支持的;


质量问题


  • 所谓质量问题,就是等价性,如何确认当前版本和以前版本(编译优化之前)是等价的?这点实际上很难确认。


  • 这里仅提几点供各位参考:


– 从功能角度看,修改影响分析、用例设计、测试覆盖等,需要项目协调资源;


– 从代码角度看,功能宏的开关要保持一致、目标文件(.o、.bin、ko)的数量、大小(不一定完全相同,仅供参考)等;

相关文章
|
3月前
|
Ubuntu Linux
Ubuntu 23.04 用上 Linux 6.2 内核,预计下放到 22.04 LTS 版本
Linux 6.2 带来了多项内容更新,修复了 AMD 锐龙处理器设备在启用 fTPM 后的运行卡顿问题,还增强了文件系统。
|
3月前
|
Ubuntu Linux
Ubuntu24.04LTS默认采用Linux 6.8内核,实验性版本可通过PPA获得
IT之家提醒,当下的 Ubuntu 23.10 也是一个“短期支持版本”,该版本将在今年 7 月终止支持,而今年 4 月推出的 Ubuntu 24.04 LTS 长期支持版本将获得 5 年的更新支持。
|
3月前
|
Ubuntu 安全 小程序
linux|ubuntu.v18.10版本即将发布,linux桌面让您动心
如果你使用闭源系统,那永远也就别想了!有了这样的需求,也许最终将linux带到人类大众通用市场的是我们中国!
112 0
|
3月前
|
Web App开发 Ubuntu Linux
又该换Linux版本了!
如果你经常用谷歌搜索,使用终端输入命令,推荐你使用Fedora而不是Ubuntu。 如果你不是一个技术用户或程序员,仍推荐使用Ubuntu,还不动手去试试,别忘了将你的体验留在评论区哦~
|
4月前
|
Linux Docker Windows
windows docker安装报错适用于 Linux 的 Windows 子系统必须更新到最新版本才能继续。可通过运行 “wsl.exe --update” 进行更新。
适用于 Linux 的 Windows 子系统需更新至最新版本(如 wsl.2.4.11.0.x64.msi)以解决 2025 年 Windows 更新后可能出现的兼容性问题。用户可通过运行 “wsl.exe --update” 或访问提供的链接下载升级包进行更新。
1610 0
|
6月前
|
消息中间件 NoSQL Linux
Redis的基本介绍和安装方式(包括Linux和Windows版本),以及常用命令的演示
Redis(Remote Dictionary Server)是一个高性能的开源键值存储数据库。它支持字符串、列表、散列、集合等多种数据类型,具有持久化、发布/订阅等高级功能。由于其出色的性能和广泛的使用场景,Redis在应用程序中常作为高速缓存、消息队列等用途。
913 16
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
658 2
|
9月前
|
应用服务中间件 Linux nginx
【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?Web App Linux 默认使用的 Nginx 版本是由平台预定义的,无法更改这个版本。
260 77