8

Objective-Cでメソッドスウィズリングを使用すると、どのようなパフォーマンスペナルティが発生しますか?

メッセージのスウィズリングで無効になるコンパイラの最適化があるとすれば、それはどれですか?

4

1 に答える 1

5

スウィズリングにより、Objective-C ランタイムはそのメソッド キャッシュをフラッシュします。プログラムのできるだけ早い段階ですべてのスウィズルを実行しても、おそらく目立った影響はありません。

Objective-C では、(スウィズリングのように) 実行時であっても、任意のメソッドをオーバーライドできるため、コンパイラはメソッド呼び出しを最適化するために多くのことを行うことができません。したがって、スウィズルを使用するかどうかにかかわらず、スウィズルのパフォーマンスの代償をすでに支払っています。

于 2016-03-07T00:46:25.587 に答える