2017-08-08 10 views
1

swiftに、次の間のいずれかのパフォーマンスの違いが存在することになる場合、私は疑問に思って:パフォーマンス

let x = 42.42 
print(floor(x)) 

let x = 42.42 
extension Double { 
    func myFloor() -> Double { 
    return floor(self) 
    } 
} 
print(x.myFloor()) 
+0

まあもう一つは、コンパイル時エラー(voidを返すように宣言された方法で非ボイドリターン)を有し、ランタイムエラー(無限の再帰を引き起こします'Darwin.floor'や' Glibc.floor'ではありません) – Alexander

答えて

2

コンパイラは、第二のケースでコードをインライン化同じマシンコードを生成します。 floor`がインスタンスメソッドを指す `ためYou can see for yourself, here.

enter image description here