iOS 编译设计 clang 和 llvm
编译过程如下:
-
预处理:
替换 宏定义,条件编译等
-
词法分析
-
语法分析
-
遍历语法树生成汇编代码
-
通过汇编器将汇编代码生成机器码
-
生成 .o 机器码文件
配置
去掉无用代码
Build Settings - Linking - Dead Code Stripping
设置为 YES
Deployment - Deployment Postprocessing
Debug 环境设置为 NO,Release 环境设置为 YES
Delopment - Strip Linked Product
设置为 YES
异常
Apple Clang - Language - C++ - Enable C++ Exceptions
Debug 环境下设置为YES,Release 环境下设置为 NO
Apple Clang - Language - Objective-C - Enable Objective-C Exceptions
Debug 环境下设置为 YES, Release 环境下设置为 NO
减少Define宏定义的使用
因为 define 的每一次编译都需要检查,只要改动就要整个项目检查,因为 define 是在编译时替换,因此会很慢
工程组件化
尽量在合理设计.h 中的 API ,.h 文件尽量少引用
增量编译??
给 Xcode 提供专属内存盘,提高读写速度(没用过)
#!/bin/sh
# usage: $ramdisk.sh [capacity=4] [label=RamDisk]
# default capacity=4(gb)
capacity=4
if [ "$1" != "" ]; then
capacity=$1
fi
# default label="RamDisk"
label="RamDisk"
if [ "$2" != "" ]; then
label="$2"
fi
# echo "capacity=$capacity label=$label"
# 1(capacity)=2097152(ram)
ram=$(($capacity*2097152))
if ! test -e "/Volumes/$label" ; then
diskutil erasevolume HFS+ "$label" `hdiutil attach -nomount ram://$ram`
fi
# 8 是大小
sh ramdisk.sh 8 DerivedData
然后将 Xcode 偏好设置中的 Locations 的 derived data 的路径设置为上面那个盘
############################################
这篇记录是半年前写的,现在在看回来,突然觉得没甚意思,这和我们上学那会儿的考试前的死记硬背没甚差别,我们都在记各种东西,但是工作中却是一个萝卜一个坑,很多东西也不用,很多东西只是为了面试,很多东西只是为了得到工作,可是工作给我带来了什么?我们一直在提倡努力工作,但是努力工作的意义何在?长时间的透支自己的时间工作,最终变成生活只剩工作,一旦工作没了,那好像生活也没了,可悲可叹。每天匆匆忙忙上班下班,披星戴月,就是为了那几个钱 💩 💩 💩 💩 💩 💩
###########################################
唉!!!💩 💩 💩 💩 💩 💩 💩 💩 搞钱搞钱 💩 💩 💩 💩 💩 💩 💩
原文始发于微信公众号(三万之一):iOS编译优化
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/231166.html