提问人:yasin89 提问时间:10/30/2023 最后编辑:Alexanderyasin89 更新时间:10/30/2023 访问量:87
Swift 中的 @inlinable 属性是什么?
What is the @inlinable attribute in Swift?
问:
我对功能有更多的研究,但找不到任何简单的解释。@inlinable
@inlinable func printPlusOne(_ num: Int) {
print("My number: \(num + 1)")
}
用法如上所示。
我找到了这个属性的主题,但我无法弄清楚。有人可以解释一下,简化它,这个属性有什么好处吗?
这是我读到的链接主题:https://swiftrocks.com/understanding-inlinable-in-swift
感谢您的回复。
答:
0赞
Cœur
10/30/2023
#1
来自 Swift 文档: https://docs.swift.org/swift-book/documentation/the-swift-programming-language/attributes/#inlinable
将此属性应用于函数、方法、计算属性、下标、便利初始值设定项或取消初始值设定项声明,以将该声明的实现公开为模块公共接口的一部分。
→ 当你使用它时,人们将能够看到它的源代码。有点像直接在头文件中执行 C++ 实现时。编译器可能会(或不)对此做些什么。
内联代码不能与私有或 fileprivate 符号交互。
→ 这是为了强调何时无法使用它。
至于好处,我很想指出 ISO C++ 对其等效关键字(内联)的采用:
(在概念上类似于 #define 宏发生的情况)
这可以提高性能,因为优化器可以按程序集成被调用的代码 - 将被调用的代码优化到调用者中。
内联函数会提高性能吗?
是的,也不是。有时。或。
没有简单的答案。 内联函数可能会使代码更快,也可能会使代码更慢。它们可能会使可执行文件变大,也可能使可执行文件变小。它们可能会引起捶打,它们可能会阻止捶打。它们可能而且经常与速度完全无关。
评论
@inline
@inlining