Avatar
Swift 4.2で@inlinableとか使うとtestFooDirecttestFooExampleは同等になった。 public struct Example<Base> { @usableFromInline let base: Base @inlinable public init(_ base: Base) { self.base = base } } public protocol ExampleCompatible { associatedtype CompatibleType var ex: CompatibleType { get } } extension ExampleCompatible { @inlinable public var ex: Example<Self> { return Example(self) } } extension Foo { @inlinable public var ex_ab: Int { return a + b } } extension Example where Base == Foo { @inlinable public var ab: Int { return base.a + base.b } } (edited)
10:30 AM
testBarExample@inlinableを色々つけてもtestBarDirectより10倍くらい遅い。