加入收藏 | 设为首页 | 会员中心 | 我要投稿 平凉站长网 (https://www.0933zz.com.cn/)- 图像处理、语音技术、媒体智能、运维、低代码!
当前位置: 首页 > 站长资讯 > 动态 > 正文

记好这 24 个 ES6 方法

发布时间:2021-01-27 10:48:01 所属栏目:动态 来源:互联网
导读:Ccache我们经过在工程的一番尝试、确实在某些方面上极大的提升了我们出包的速度。美柚iOS Ci打包从之前的最快20min+出包到最快10min,确实能够给我们带来比较不错的提升,大大加快了我们项目的出包速度。在我们项目运行了几个月后,对于我们项目的情况,也发

Ccache我们经过在工程的一番尝试、确实在某些方面上极大的提升了我们出包的速度。美柚iOS Ci打包从之前的最快20min+出包到最快10min,确实能够给我们带来比较不错的提升,大大加快了我们项目的出包速度。在我们项目运行了几个月后,对于我们项目的情况,也发现了一些问题,现在总结了以下几点:

优点:

  • 满足我们追求的无侵入、无影响现有的业务的要求,无入侵、且开发人员无感知。
  • 确实能大幅度地提升编译速度,美柚项目上最快时提高3倍以上的编译速度。
  • 不需要对项目作出大调整,只需部署相关环境和一些脚本支持。
  • 不需要改变开发工具链。
  • 同一个目录下,CCache 的缓存命中率相对稳定。

对我们项目中有存在些问题点:

  • 在未有缓存的情况下,首次打包编译的时间比原来的翻近一倍,原来20+min,首次将近40+min,在资源紧张的情况下,甚至是70min+。
  • 修改一些引用较多的文件(如公共库、底层库改动),容易造成大范围的缓存失效,速度会变得比原来未使用ccache时更慢。
  • 多个项目相同的组件不支持缓存共享,我们有多个分支打包的需求,修改目录名称后,缓存即失效。
  • 我们机器的Ccache最大的缓存上限约18GB,且Debug/Release区别缓存,美柚iOS项目占用5GB+的缓存,多个项目、多个分支很容易超出上限,一台Ci机器同时支持多个项目会触发CCache清缓存。
  • 对机器硬盘读写要求高,如不是全部固态硬盘,速度影响大。
  • CCache 不支持 Clang Modules,系统框架例如 AVFoundation、CoreLocation等, Xcode 不会再帮你自动引入,会导致编译失败。
  • CCache 不支持 PCH 文件
  • CCache 目前不支持 Swift

我们一台13年的ci机器同时需要承接七八个项目、多个分支的打包任务,在有多个项目同时打包的情况,显得尤其地力不从心。

在硬件资源有限的情况下,并且在无侵入、无影响现有的业务的前提下,如何解决这些摆在团队面前的难题,便成了我们迫在眉睫的迫切需求,最近半年多来一直在寻找加快打包速度的方案。

二、编译提速探索与尝试

1、CCache

CCache 是一个编译缓存器,一个能够把编译的中间产物缓存起来的工具

其原理是通过把项目的源文件用ccache编译器编译,然后缓存编译生成的信息,从而在下一次编译时,利用这个缓存加快编译的速度,目前支持的语言有:C、C++、Objective-C、Objective-C++

下面这张图基本就阐述了CCache的工作原理。


(编辑:平凉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读