展讯加快编译时间
⑴ Xcode 构建速度优化(一)衡量编译时间
随着项目不断迭代,工程文件越来越多,引用的三方库也越来越多,这些直接导致编译时间的不断增加,完整编译一次项目动辄需要五分钟以上时间,实在有些影响开发效率,是时候来一波提速了。
为编译和构建提速,首先我们需要对速度有一个衡量标准:准确获得构建用时
首先,我们需要定义要衡量和优化的内容。 有两种选择:
xcode默认情况下会跟踪所有构建,我们可以通过更改xcode相关设置,来在活动查看器中显示出构建时间,通过命令行:
每次编译成功后,会在Successed之后显示出所用时间:
Xcode Build Timing Summary是Xcode10中加入的用于查看获取构建时间和发现用时瓶颈方面的最有利工具。 可以通过Proct->Perform Action->Build With Timing Summary来开启:这样在 Build Log 的末尾就会添加 Timing Summary Log。我们可以通过这个 log 看到哪个阶段是耗时的,便于我们进行优化。
如上图中: xib阶段的编译耗时明显是比普通c文件要多的,意味着我们可以通过减少xib方式来优化提升速度
而c文件的编译用时比总时间还要长,是因为c文件是并行编译的
在命令行中同样可以开启这个功能:
常用的第三方工具有 BuildTimeAnalyzer 、 xcode-build-times-rendering 、 XCLogParser 。
BuildTimeAnalyzer可以统计可以得出某个文件的类型检查时长,每个表达式的类型检查时长。
xcode-build-times-rendering是一个Ruby编写的第三方工具,可以方便地分别测量目标的构建时间并在图表上显示它们,使用gem安装
接下来使用这个工具自带命令配置项目
然后构建项目并生成报告:
这个工具使用上比较简单,缺点是只能从宏观上生成各个target编译的整体图标,无法详细列出各个内部编译明细
XCLogParser可以详细列出各个Target和内部每个文件的编译耗时,对我们分析编译时间瓶颈非常有帮助,它的工作原理主要是做为解析器,通过解析xcode编译生成的xcactivitylog日志来记录
安装:
编译项目后,进行安装
安装成功后通过命令:
会自动在当前目录的 build/xclogparser/reports/ 路径下生成报告,其中--project参数需要设置为待分析项目的名字,并注意当前在终端切换到希望写入日志的目录。
报告截图:
这个工具将作为我们后面分析提升编译构建速度的主要使用工具。
经过我多次在不同时间段,不同电脑上不断尝试编译,
我发现编译耗时是一个比较玄的东西,及时在同一台电脑,同一个项目, 同一套环境配置下,编译用时也会随着电脑当前状态(包括同时打开进程、散热等等)上下大幅跳动,就像算法时间复杂度一样,有时候我们明明做了一些细微的优化,但是结果反而是编译耗时增加了,这是很正常的事情
所以,衡量这个标准需要我们取多次试验中的平均值作为参考。
⑵ 手机编译时间是什么意思 手机编译时间介绍
1、手机编译时间是手机系统软件版本编译完成的时间,新手机的系统编译时间通常会早于手机出厂和购买时间的。
2、手机的生产日期可以在手机包装盒上查询到。手机的生产日期是固定的,不可以更改。
3、手机的购机时间可以在购机发票查询到,若发票已丢失则不能查询。
4、手机的购机使用时间是无法直接查到的,可以参考手机发票上的购机时间,如果您的发票已遗失,可以查看手机包装盒上的生产日期。
5、手机开机后使用时间可以进入手机设置--更多设置--关于手机--已使用时间项查看手机的开机使用时间,手机重启后使用时间将会清零。
⑶ 手机编译时间是什么意思
品牌型号:iPhone 13系统:IOS15.4
软件版本:
手机编译时间是手机系统软件版本编译完成的时间,新手机的系统编译时间通常会早于手机出厂和购买时间的。是用于记录手机某一阶段工作完成的时间信息,方便对手机进行检查和管理的,一般就是一些手机参数、信息的必要展示。
计算机专业人员和行业从业人员,最常做的工作就是编程,使用编译程序对其个人编制的源程序进行编译的过程,就被称之为程序编译,这个编译时间就是指编译程序将源程序编译成目标程序所占用的时间,它是一个时间段,大家为了提高效率,都会用各种方法缩短这个时间。
⑷ vivo手机上的编译时间是怎么回事出厂时间在哪里
编译时间是设备系统软件版本编译完成的时间,新设备的系统编译时间通常会早于设备出厂和购买时间的。
手机出厂日期(出货日期)是机器出货时的塌宏好扫描团铅日期,若是需要通过出厂日期计算保修时间,保修时间是以购机时开具的有效购买凭据和保修卡上的时间为准的绝核。
若是仅查询设备出厂时间,可以进入vivo官网--点击我的—在线客服,输入“人工”联系在线客服处理。
⑸ vivo手机上的编译时间是怎么回事出厂时间在哪里
编译时间是手机系统软件版本编译完成的时间,新手机的系统编译时间通常会早于手机出厂和购买时间的。
手机的出厂日期不可以查询,可以参考手机包装盒上的生产日期,出厂日期会比生产日期略晚一点。
⑹ Android Studio编译慢、卡死和狂占内存怎么破
在2020年,仍然使用2g内存的电脑,你可以改变职业。没有合适的设备,什么都没用。Android Studio是内存,设备烂卡死不可避免,要解决卡的问题,一定要升级硬件设备。另一些人则说,对修辞学的回答相当有力,在一定程度上,加快编译的速度,却不能解决卡死的问题,没有人能解释为什么会加快编译的速度。
至于加快编译,有一种方法,我认为一些主要适用性的答案并不强,实际上应该从gradle开始,什么不是正确的地方,也请轻喷,有什么问题可以留个信息。
我谈到了下面的所有步骤,建议在最后进行。在终端编译中有很多好处:
能观察整个编译过程,帮助理解层次构建过程;
可以看出哪些任务在编译过程中耗费时间,可以较慢地编写出适合的补救方案;
可以终止编译,如果在某个阶段被卡住,CTRL + c终止编译,Android也会终止在Studio中编译,但基本上九次会失败;
因为它最终会对Android Studio产生影响,基本不会导致Android Studio caton;不满足Android工作室的各种bug ?
最后,为什么要减少设置中模块的数量。Gradle实际上可以加速编译,但是有很多限制?
首先,我们认为编译过程,首先解析gradle配置,设置任务依赖于有向图,然后执行每个任务的模块,如果我们通过maven的依赖关系,使用模块的aar(单android库),如果我们想要改变文件在这个模块,不要再次修改上传下载,每次都是很好,但是有一个致命的问题:不修改版本号,快照通常不是做的想法。这可能导致一些不会生效的变化,并且需要时间来解决这个问题。但是,有一种方法可以在一定程度上解决这个问题,并添加以下脚本:
项目。配置。所有(新操作<配置> ({@ Overridevoidexecute(配置文件){文件)。ResolutionStrategy。TimeUnit CacheDynamicVersionsFor(5。分钟)
文件。ResolutionStrategy。TimeUnit CacheChangingMolesFor(0。秒)} })
有人会问,插件,每个人都要开发一个模块,对于每个模块的维护都要打包到maven,每次我修改,甚至很小的改动,也要做一个上传,就会遇到快照不做同样的问题。嘿,嘿,这个问题,我们公司有一个等级插件,已经解决了,至于解决方案,是公司机密,我不会说。
一件事,我相信大多数开发人员共同发展是单一模块,该模块的情况并不多,所以最基本的也是依赖aar或罐子里,并不存在所谓的图书馆aar上传,所以一些答案的耶和华说并不意味着什么,这就是为什么我说影响编译速度的情况主要集中在它的生命周期的第三阶段,第三阶段的优化,看到我的答案。