How do inefficient imports affect your project?

时间:2015-08-06 13:53:37

标签: objective-c import

AppCode has a feature to "Optimise imports".

It will take redundant or unused imports and remove them and reshuffle them etc...

I can see why it can be done... If you have 3 files A, B and C...

  1. A imports B
  2. C import A and B

In this case you can remove the import of B in C.

But what does it do to the project when these redundant imports build up? Can it slow the build? Does it affect the product?

1 个答案:

答案 0 :(得分:3)

在冗余导入的情况下,主要是为了减少代码噪声(即不需要的代码行)。两次导入同一文件没有太大的额外成本。 include确实有一个非常重要的成本,因为它必须打开并读取文件(即使它使用#ifdef警卫),但import试图避免这种情况。即便如此,那里的成本也很低。

导入不使用的文件可能会产生大量的构建时间。在类C语言中,导入意味着“读取整个文件及其包含的所有文件并在此处解析它们”。这可能非常昂贵。有一些技巧可以避免它完全那么糟糕(特别是预编译的头文件),但它很糟糕。因此,摆脱未使用的进口绝对有利于构建时间。

两者都不应对最终产品产生任何影响。如果确实如此,则AppCode将删除不应删除的标头。

其中一些更改采用新的@import语法,不需要读取和解析模块的所有头文件。但是你仍然希望避免导入你不需要整理的标题,如果没有别的话。