linux – 这个构建系统可以加速吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 这个构建系统可以加速吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2247字,纯文字阅读大概需要4分钟。
内容图文
我们的构建是狗慢.它在linux上使用嵌套的gnu makefile.它为同一源树中的三个不同目标创建三个构建.它使用符号链接依次指向三个并行目录树中的每一个.我们可以使用make inside子目录进行部分构建,这样可以节省时间,但是如果我们的工作跨越多个目录,我们必须为三个目标中的至少一个构建,并且至少需要45分钟.仅子目录构建可能“仅”5-10分钟.
你知道有什么快速的事情要检查可能会让这个构建系统陷入困境吗?例如,是否有更快的符号链接替代方案?
另外:我看过有关递归makefile的文章.有没有人知道平面化Makefile系统会产生多种makefile(大约800个)和超过450万个源代码行的影响?人们目前喜欢通过在该目录中使用make来构建他们当前的子目录或进程(嵌入式linux目标).
我刚刚了解到,直到最近,构建时间是两倍(wince),此时发布工程师部署了ccache.
解决方法:
加速构建的注意事项:
构建往往受I / O限制,因此将I / O分布在多个驱动器/控制器或机器上.例如,将源放在一个物理驱动器上并将目标(构建输出)放在不同的物理驱动器上,并将这两个驱动器与包含构建工具(.NET,Java,Ant等)的物理驱动器分开. )和包含您的操作系统的物理驱动器.
构建通常可以异步完成,因此建立和使用单独的构建机器(持续集成服务器).特别是用于计算指标,生成文档,生成候选发布版以及开发人员工作站上需要太长时间或不需要的任何其他内容.
构建工具通常涉及大量进程启动/关闭开销,因此请选择最小化开销的工具,脚本和过程.对于像make和Ant这样的工具来说尤其如此,这些工具倾向于将其他工具作为子进程调用.例如,我正在转向基于Python的构建系统,以便我可以从单个进程完成大部分构建处理,但仍然能够在必要时轻松生成其他进程.
构建工具通常支持基于检测到它们什么都不做而跳过构建步骤(不进行编译,因为自上次编译以来源尚未更改).但是,默认情况下,对跳过构建步骤的支持通常不活动 – 您可能需要专门调用它.例如,编译器通常会自动执行此操作,但代码生成则不会.当然,这样做的必然结果是尽可能使用增量构建(在工作站上进行开发时,只要它“行为”).
构建脚本可以快速轻松地变得非常复杂,因此请花些时间让它们变得简单.首先,将构建分离为单独的项目,每个项目仅构建一个“工件”,例如JAR,DLL或EXE.这样,您只需不调用目前不需要的长版本,就可以节省大量时间.其次,通过不进入另一个项目来简化每个项目的构建 – 始终通过构建工件而不是源构建项目依赖项.这将使每个项目独立,您可以使用“超级”脚本随意构建项目的各种子集.
最后,将您的构建基础架构视为自己的真实项目 – 针对它记录错误和功能请求,对其进行版本控制,执行官方发布,并继续无限期地对其进行优化.把它当成一种必不可少的产品而不是事后的想法:你的构建是任何健康项目的命脉,如果你关心它,它可以保存你的面包.
内容总结
以上是互联网集市为您收集整理的linux – 这个构建系统可以加速吗?全部内容,希望文章能够帮你解决linux – 这个构建系统可以加速吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。