Closed ensan-hcl closed 1 year ago
Swift5.9でvariadic genericsが来たらこれも簡単に書けるようになるかな?多分こんな感じで良さそう
@inlinable public func debug<each T, U>(_ items: repeat (@autoclosure () -> each T), _ lastItem: @autoclosure () -> U) {
#if DEBUG
repeat print(each items, terminator=" ")
print(lastItem)
#endif
}
FullConversionだとあまり効果がないが、GradualConversionでは8%くらいの改善になってる!
some Any
にする意味があるのかも合わせてチェックする。こういう感じ。
@inlinable public func debug(_ item1: @autoclosure () -> Any) {
#if DEBUG
print(item1())
#endif
}
あんまり変わらないか僅かにいいので、some Any
ではなくAny
でいく。
Releaseビルドでは出力しないタイプの
print
としてazooKeyではdebug
を多用しているが、現在の実装は呼び出し時に引数が全て評価されるため、引数の計算自体は行われてしまう。そこで、以下のように変更することで若干高速になることを期待できる。実際軽く試したところ5%程度改善しそうだった。これを厳密に評価し、良好なら導入したい。