为什么使用结构会增加应用程序的二进制大小?

时间:2018-09-17 16:49:24

标签: swift struct compilation filesize

Bohdan Orlov在GitHub上有一个颇受欢迎的仓库,称为iOS Skills Matrix。
在“内存”行的“中间”列中,它指出

  

结构增加二进制大小

半年多以前,我第一次看到这个声明,自从我一直想知道它是否正确,如果是这样,为什么会这样呢?

在结构调用中复制结构是否与事实有关?

BohdanOrlov/ios-skills-matrix

1 个答案:

答案 0 :(得分:6)

来自here(与Swift无关,但可能是答案)

  

C 中,未进行零初始化或未初始化的静态结构(即静态地为零以外的其他值)会增加二进制大小(它们进入数据段,即使您仅初始化结构的一个字段,二进制文件包含完整结构的完整图片)

here开始(不仅关于结构,而且可能也很有趣)

  

结构可以增加二进制文件的大小。如果将结构放入列表中,则会在堆栈上创建它们,并且它们会增加二进制文件的大小。

     

可选用法也会增加二进制文件的大小。您将使用可选的,但是您不知道的是编译器必须做很多事情;它必须进行检查,必须进行展开。因此,即使它只是带有问号的单行代码,您在二进制文件中也获得了很大的容量。

     

通用专业化是我们遇到的另一个问题。无论何时使用泛型,如果希望泛型都快,编译器都会对其进行专门化处理,并且还会使您的二进制文件数量增加很多。

第一句话对我的事业很有意义,因此我想Swift也发生了同样的事情。在某些情况下,您将结构对象存储为二进制文件是有原因的。

希望有帮助。