将类设置为final有助于编译时间更快吗?

neo*_*neo 3 swift

我想知道如果一个类被标记为final,它的编译速度会更快吗?我认为不会,因为将类设为 Final 只会有助于优化 Swift Method Dispatch。

mat*_*att 6

是的,它确实。苹果在这方面给出了具体指导。

正如您自己所说:

将类设为 Final 只会有助于优化 Swift 方法分派。

是的,所以如果这个类没有子类,编译器就会进行优化。但是,如果一个类没有显式标记为final,则编译器必须在每个其他文件中查找子类,因为它们的存在会改变该类的详细信息的编译方式(即为了进行优化)。而且这种搜索会增加时间和开销。

因此,如果您知道您的类没有子类,请始终将其标记为final。在现实世界的大型项目中,差异非常明显。

  • 您是否要求我在评论中再说一遍我在回答中已经说过的话?您不必喜欢我的回答,但请不要强迫我重复。 (3认同)