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

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



编译分类及对应场景


全量编译


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


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


增量编译


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


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


需要考虑哪些因素


具体需求


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


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


意识问题


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


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


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


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


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


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


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


如何评价


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


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


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


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


质量问题


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


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


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


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

相关文章
|
1月前
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
|
1月前
|
安全 Linux 虚拟化
|
2月前
|
Kubernetes Linux 测试技术
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
116 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
2月前
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
|
1月前
|
Linux
Linux - 如何编译源码安装软件
源码编译安装通常包括三个步骤:1) `./configure` 检测平台特征和依赖项,生成 Makefile;2) `make` 编译源码,生成可执行文件;3) `make install` 将可执行文件安装到指定目录并配置环境变量。
59 0
|
2月前
|
Linux 编译器 C语言
Linux c/c++之多文档编译
这篇文章介绍了在Linux操作系统下使用gcc编译器进行C/C++多文件编译的方法和步骤。
49 0
Linux c/c++之多文档编译
|
2月前
|
Linux 开发工具
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
107 0
|
3月前
|
Linux 编译器 开发工具
快速在linux上配置python3.x的环境以及可能报错的解决方案(python其它版本可同样方式安装)
这篇文章介绍了在Linux系统上配置Python 3.x环境的步骤,包括安装系统依赖、下载和解压Python源码、编译安装、修改环境变量,以及常见安装错误的解决方案。
325 1
|
2月前
|
Java Linux Maven
用sdkman在linux上管理多个java版本
本文介绍了如何在Linux上使用SDKMAN来管理多个Java版本,包括安装SDKMAN、验证安装、列出和安装不同版本的JDK、Maven和Gradle,以及如何切换使用不同版本。
83 0