Avatar
omochimetaru 6/3/2019 9:08 AM
このswitch-caseが、f2にinline展開されてる
9:08 AM
このdefault-caseのコードが、SILで見えているんだ。
9:08 AM
これ、めちゃくちゃいけてないね
9:09 AM
呼び出してるのはfloorなのに、一度roundの呼び出しになって
9:09 AM
/// // Equivalent to the C 'floor' function: /// var z = 6.5 /// z.round(.down) /// // z == 6.0
9:09 AM
このモードに分岐で突入してから本当の関数を呼ぶ
9:10 AM
最適化的には定数伝搬による分岐削除ができてれば、直接Builtin.int_floor_FPIEEE${bits}の呼び出しにできそうなはずだけど
9:10 AM
Doubleの場合もfloorじゃなくてarray[i].round(.down)を使ったら同程度の速度になるみたいです。
まあ結論として
9:11 AM
FloatingPoint.floorは特殊化されたとしても遅い」
9:11 AM
って事になるね。。
9:11 AM
これは共有したほうが良さそう・・・