我意识到这不是一个大问题,但我很好奇。我有一个函数 func radian( Degree: CGFloat)->CGFloat
,按照建议将输入乘以必要的值以将度数转换为弧度。
我在代码中添加了对具有常量值的函数的引用。在给定的主循环中,该函数将使用常量参数(例如radian(360)
)调用至少几千次。
我意识到在现代处理器上进行几千次乘法不是问题,但我仍然想了解 Swift 编译器的工作原理。
我正在考虑是否返回并将该函数的结果作为硬编码值而不是对该函数的调用。我的直觉是编译器会自动为我执行此操作,但我想确保这是真的。
编译器是否将radian(360)
编译为6.283184
最佳答案
编译器可能会内联调用,并且一旦内联调用,它也可能会执行常量折叠,以便在编译时进行计算。
所以,是的,启用优化后,radian(360)
很可能会被编译为 6.283184
。但验证这一点的唯一方法是实际查看优化构建的结果组装。
如果您想让这种可能性更大,您可以将未记录的 @inline(__always)
属性粘贴到您的函数上。这将迫使它始终内联该函数。但这可能是不必要的。
关于swift - Swift 如何将常量值处理为数学函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46137923/