作为程序员,我们在开发时,尤其是在写业务的过程中,我们大都不关系编译器做了什么,其实编译器帮我们做了很多工作。这篇文章很浅显的分析下内存优化与编译优化。这里很推荐一本书《程序员的自我修养》,对于我们了解程序从编译、链接到执行很有帮助,虽然还没有啃完。
内存优化
了解了对象的创建过程,现在我们来看看对象的成员变量在内存中是如何分布的。
还是以 SMPerson
为例,这次我们新加了一个 char
类型的字段:
@interface SMPerson : NSObject |
我们分析,SMPerson
需要的内存空间仍是 40
字节,开辟的内存空间是 48
字节。
对于 int
,char
类型,OC 会自动帮我们进行内存优化。
编译优化
编译优化一般是编译器完成的,在开发过程中,一般我们都是在 debug 模式下,debug 模式下我们可以打印一些日志,开启僵尸对象等。在 debug/release 模式下编译后的汇编代码也有所不同:
int add(int a, int b) { |
能够明显的看出,release 模式下的汇编代码更短。
我们可以在 build setting
-> Optimization Level
查看:
release 模式下默认开启编译优化。
编译优化可以减少编译时间、链接时间、运行时间等。