swift - Swift 如何将常量值处理为数学函数?

标签 swift

我意识到这不是一个大问题,但我很好奇。我有一个函数 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/

相关文章:

swift - NSToolbar 与 swift 中的模态窗口

swift - 强制 UIButton 只有一个标题行

ios - 如何在 Swift 中向 TableView 添加自定义单元格?

ios - 尝试使用 willDisplayCell 在 Swift UItableView 中实现无限滚动。想要控制增量做一次

ios - Swift 2.0 上的一行单例

默认情况下禁用 SwiftUI swizzling,电话身份验证不起作用

swift - Swift 中的数学函数

iOS - 如何对深层链接进行单元测试以确保它们可以在应用程序端进行处理

ios - 在 UIAlertController 中更改标题颜色

Swift 在 for 循环中混淆 "unresolved identifier"