ランタイムを必要とする言語のランタイムがどのくらいの頻度で呼び出されているかをよりしっかりと把握したいと思います。この場合、特に知りたいのは次のことです。
OS X または iOS システムで任意の秒に実行されるすべての関数呼び出し (もちろん概算が必要です) のうち、Objective-C ランタイム関数 (つまり、ランタイムによって定義される関数) はいくつですか?
ランタイムを必要とする言語のランタイムがどのくらいの頻度で呼び出されているかをよりしっかりと把握したいと思います。この場合、特に知りたいのは次のことです。
OS X または iOS システムで任意の秒に実行されるすべての関数呼び出し (もちろん概算が必要です) のうち、Objective-C ランタイム関数 (つまり、ランタイムによって定義される関数) はいくつですか?
もちろん、アプリケーションによって異なりますが、一般的に答えは「たくさん」です。みたいに、めちゃくちゃたくさん。
本当に数値を確認したい場合は、dtrace を使用して、呼び出されたすべてのランタイム関数をログに記録することをお勧めします。 このブログエントリでは、そのようなことを行う方法について説明しています。
多くの。ここにいくつかの例を示します。
メッセージを送信するたびに、実際のメッセージ送信はランタイム関数によって行われます (これは実際、ほとんどすべての目的 C プログラムで最も呼び出されるランタイム関数です)。
NSObject
クラスとプロトコルは標準ライブラリの一部ではなく、ランタイムの一部であるため、最終的にデフォルトのNSObject
実装に対して実行されるメソッドは、実際にはランタイム コードを実行しています。
既定のプロパティ アクセサー (読み取りまたは書き込み) を実行するたびに、それはランタイムの一部になります。
ARC を使用している場合、弱参照に (読み取りまたは書き込みのために) アクセスするたびに、それがランタイム関数になります。
Objc ランタイムには C ランタイムが含まれているため、C ランタイム関数を含むもの (たとえば、大きな構造体を値で渡す、または返すなど) は、実際にはランタイムを呼び出しています。
もっと。