Hallo,
ich mache dieses Semester eine Seminarabeit über Objective-C und deren Runtime (die von Apple).
Beim Durchkauen der objc_class Struktur, die die Daten einer Klasse hält habe ich mir u.a. den Methodencache angeschaut. Die Literatur sagt, dass beim Suchen nach einer Methode zuerst im Cache geschaut wird ob sich das Selektor/IMP-Paar (objc_method Struktur) der aufgerufene Methode bereits darin befindet. Falls nicht werden die Methodenlisten linear durchsucht. Wurde die Methode dann gefunden, wird das Selektor/IMP Paar im Cache gespeichert für zukünftige Aufrufe.
Außerdem gilt: Caches grow dynamically to accommodate new messages as the program runs. und Once a program has been running long enough to “warm up” its caches, almost all the messages it sends find a cached method.
Das wollte ich mir mittels Debugger mal anschauen. Dazu habe ich eine schwachsinnige Klasse mit ganzen drei Methoden (plus die von NSObject) erzeugt. In einer noch schwachsinnigeren main-Methode habe ich dann wahllos Methoden einer Instanz dieser Klasse (und von NSObject) aufgerufen.
Dabei habe ich mir das cache Element von der zugehörigen objc_class Struktur angeschaut.
Das komische ist, dass Xcode beim debuggen behauptet, dass immer nur eine Selekor/IMP-Paar im Cache ist. Nämlich immer die als letztes aufgerufene Methode. - Da frage ich mich jetzt: Soll ich Xcode glauben (es wäre nicht das erste mal, dass der Debugger absoluten Bockmist behauptet)?
Und falls es tatsächlich stimmen sollte was angezeigt wird: Lügt sämtliche Literatur?
Wie wird die Maximalgröße des Caches bestimmt? Vielleicht anhand der Anzahl eigener Methoden einer Klasse?
Vielleicht hat sich hier ja jemand ebenfalls Gedanken darüber gemacht und kann mir weiterhelfen.
									
									
								ich mache dieses Semester eine Seminarabeit über Objective-C und deren Runtime (die von Apple).
Beim Durchkauen der objc_class Struktur, die die Daten einer Klasse hält habe ich mir u.a. den Methodencache angeschaut. Die Literatur sagt, dass beim Suchen nach einer Methode zuerst im Cache geschaut wird ob sich das Selektor/IMP-Paar (objc_method Struktur) der aufgerufene Methode bereits darin befindet. Falls nicht werden die Methodenlisten linear durchsucht. Wurde die Methode dann gefunden, wird das Selektor/IMP Paar im Cache gespeichert für zukünftige Aufrufe.
Außerdem gilt: Caches grow dynamically to accommodate new messages as the program runs. und Once a program has been running long enough to “warm up” its caches, almost all the messages it sends find a cached method.
Das wollte ich mir mittels Debugger mal anschauen. Dazu habe ich eine schwachsinnige Klasse mit ganzen drei Methoden (plus die von NSObject) erzeugt. In einer noch schwachsinnigeren main-Methode habe ich dann wahllos Methoden einer Instanz dieser Klasse (und von NSObject) aufgerufen.
Dabei habe ich mir das cache Element von der zugehörigen objc_class Struktur angeschaut.
Das komische ist, dass Xcode beim debuggen behauptet, dass immer nur eine Selekor/IMP-Paar im Cache ist. Nämlich immer die als letztes aufgerufene Methode. - Da frage ich mich jetzt: Soll ich Xcode glauben (es wäre nicht das erste mal, dass der Debugger absoluten Bockmist behauptet)?
Und falls es tatsächlich stimmen sollte was angezeigt wird: Lügt sämtliche Literatur?
Wie wird die Maximalgröße des Caches bestimmt? Vielleicht anhand der Anzahl eigener Methoden einer Klasse?
Vielleicht hat sich hier ja jemand ebenfalls Gedanken darüber gemacht und kann mir weiterhelfen.
 Du erfüllst 2 von 2 Kriterien.
 Du erfüllst 2 von 2 Kriterien.									
