Avatar
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)
12:48 AM
RGB.allCasesをforの外で呼んだ場合のtestAとの比較
12:48 AM
12:55 AM
あれ?↑間違ってたかもしれないです。 同モジュール内でも遅いので単に最適化で展開されていないのか……