在 swift 中,编译时间真的很慢,项目中的代码量会增加。所以我正在寻找减少时间的方法。一种方法可能是使用语言关键字(如final
或static
)来更改编译器在这种情况下使用静态和动态调度处理代码的方式。
但据我所知,最好避免运行时开销,减少动态调度
所以我的第一个疑问是,如果在运行时使用更多的动态调度来尽我所能减少编译时间,但代价是运行时开销。
我的第二个疑问是运行时开销如此糟糕? 您可以牺牲编译时间来减少开销吗?
对于标题问题:
编译时间是以下因素的函数:
- 扫描
- 解析
- 符号管理
- 语义验证
- 类型检查(正如纳皮尔指出@Ron)
- 代码路径优化
- 发射机器代码或 LLVM-IR
上述每个步骤都将取决于用于完成该步骤的每个结果的技术以及源文件的大小/复杂性。在顺序和步骤数量上具有一定的灵活性。
使用动态调度是一个运行时函数,值得另一个问题。