工具
sort 用于排序
xcpretty xcodebuild的输出进行格式化
gnomon 用于计算间隔时间
xcodebuild 编译iOS项目
安装工具
1. xcpretty
地址: https://github.com/supermarin/xcpretty
安装: gem install xcpretty
2. gnomon
地址:https://www.npmjs.com/package/gnomon
安装:npm install -g gnomon
3. sort和xcodebuild 是系统和xcode自带的
计算时间的执行顺序
xcodebuild 编译 ---> xcpretty 格式化输出 ---> gnomon 计算时间 ---> 重定向数据到本地TXT ---> sort排序结果
代码演示
//表示编译当前代码片段的总时长 -t elapsed-total(--type=
//表示大于2s的黄色标-m=2.0(--medium=seconds)//表示大于2s的红色展示-high=2.0(--high=seconds)
//表示执行代码的时候时间增量,如果为false,那么没有时间增量的变化过程。-r=100(--real-time=false>)
将执行的命令总结成脚本,先定义两个存放输出编译结果文件的地址,都是相对路径,未经过过排序的编译时间以及文件放到result.tex文件中,result.txt里编译结果经过排序以后再进行sort 排序生成 result1.txt文件中。脚本中的真正进行编译格式化以及输出结果的样式由xcodebuild -workspace ... 这行代码来实现,其中yourProject就是你自己的项目名称,archivePath后边跟的是这个项目的绝对路径,gnomon来规定输出的格式以及输出的样式等。最下边的sort 是进行格式化排序输出的。
#!/bin/shmyFile="./result.txt"myFile2="./result1.txt"if [ ! -f "$myFile" ]; thentouch "$myFile"elserm -rf "$myFile"fiif [ ! -f "$myFile2" ]; thentouch "$myFile2"elserm -rf "$myFile2"fixcodebuild -workspace yourProject.xcworkspace -scheme yourProject -archivePath 项目的绝对路径 archive |xcpretty | gnomon -t elapsed-total -high=5.0 --real-time=false 1> "$myFile" &&sort -n -k1 result.txt 1> "$myFile2"wait
执行结果
左边是编译的时间,右侧是项目中具体的文件。根据编译的时间我们可以看到具体的文件大小,编译时间比较长的文件进行代码层面的优化。
遇到的问题
1、安装xcpretty,发现没有权限。
解决办法:导入GEM_HOME。
在bash_profile里添加,可以顺利安装了
export GEM_HOME="$HOME/.gem"
参考文献:
https://www.npmjs.com/package/gnomon
https://github.com/rbenv/rbenv/issues/1267
https://www.jianshu.com/p/7966e2d37226
https://www.jianshu.com/p/e2ff8da95c42