public enum RGB: CaseIterable { case r, g, b } public let count = 100_000_000 @inlinable public func testB() -> Int { var result = 0 for _ in 0..<count { for c in RGB.allCases { switch c { case .r: result += 1 default: break } } } return result }
このようなtestBを別モジュールから呼んだ場合RGB.allCases
で毎回Array
生成しているらしくかなりコストが大きくなってしまう…… 自動実装のallCases
がinlinableじゃないってことなんでしょうけど盲点になりそう。 (edited)RGB.allCases
をforの外で呼んだ場合のtestA
との比較