会增加使用动态调度减少编译时间吗?
问题描述:
在swift中,编译时间非常慢,项目中的代码量增加。所以我一直在寻找缩短这个时间的方法。一种方法可能是使用final
或static
等语言关键字来改变编译器在这种情况下使用静态和动态分派处理代码的方式。会增加使用动态调度减少编译时间吗?
但就我看,最好避免运行时开销降低动态调度
因此,使用更多的动态调度减少在运行时开销成本的编译时间我的第一个疑问是,如果这样做,我只能在运行。
我的第二个疑问是运行时间开销太糟糕了吗?你可以牺牲编译时间来减少开销?
答
为标题的问题:
编译时间的函数:
- 扫描
- 解析
- 标志管理
- 语义验证
- 类型检查(如@Ron纳皮尔指出)
- 代码路径优化
- 发射机器代码或LLVM-IR
的步骤中的每一个上面将是什么技术被用来完成每个结果为步骤的尺寸和/复杂性的函数你的源文件。在步骤的顺序和数量方面有一定的灵活性。
使用动态调度是一个运行时功能,值得另一个问题。
+0
这就是我想知道的,我留下了别人给我的其他答案,我认为它也非常好解释为 https://softwareengineering.stackexchange.com/questions/350165/use-more-dynamic-dispatch-could-reduce-compile-time/350175#350175 –
一般来说,静态与动态调度不是编译速度问题的原因。通常问题是类型检查,并且在大多数情况下,根据我的经验,如果构建时间非常慢,问题不在于代码量,而是由于一个或两个地方需要很长时间指数型检查问题。在我的经验中,最常见的原因是链接+,比如'“string”+ x +“more”'。 +花费很长时间来输入检查和链接对于编译时间来说是非常糟糕的。 –
@RobNapier谢谢,这对我有很大帮助,所以就性能而言,它更好地避免动态分派以减少运行时间开销?并且我也不知道是否将代码作为框架或库编译为所有语言都是可能的,但是我阅读这是一种减少编译时间的方法,因为编译器不会执行该框架或库的所有进程 –