fast-enumeration

___ tag123objectivec ___ Dieses Tag sollte nur bei Fragen verwendet werden, die sich auf Objective-C-Funktionen beziehen oder von Code in der Sprache abhängen. Die Tags [Kakao] und [Kakao-Touch] sollten verwendet werden, um nach Frameworks oder Klassen von Apple zu fragen. Verwenden Sie die verwandten Tags [ios], [macos], [apple-watch] und [tvos] für Probleme, die für diese Plattformen spezifisch sind. ___ tag123performance ___ Für Fragen zur Messung oder Verbesserung der Code- und Anwendungseffizienz. ___ qstnhdr ___ Warum ist NSFastEnumeration schnell? ___ tag123iterator ___ Ein Iterator ist ein objektorientiertes Programmiermuster, das das Durchlaufen einer Sammlung unabhängig von der tatsächlichen Implementierung oder Objektadressen im physischen Speicher ermöglicht. Es ist eines der Verhaltensmuster der Gang of Four. ___ answer8443041 ___

Abhängig vom Container ist %code% mindestens so schnell wie %code% , aber normalerweise viel schneller, da weniger Methodenaufrufe erforderlich sind.

Statt %code% für jedes Element im Array aufrufen zu müssen, kann das Array mit %code% gleichzeitig einen Block von Objekten in einem C-Array zurückgeben. Iterieren dieses C-Array ist Weg schneller als viele Methodenaufrufe zu tun, die jeweils nachschlagen und nur ein Objekt zurückgeben.

    
___ tag123cocoa ___ Cocoa ist Apples Entwicklungsumgebung für MacOS, bestehend aus Foundation, Application Kit und Core Data. Verwenden Sie den "Kakao-Touch" -Tag für iOS-Fragen. ___ answer8443060 ___

%code% ist nicht schneller als jede "for" -Schleife. In einem allgemeinen Sinn ist das unmöglich, weil Grundschleifen bereits so optimiert sind wie sie sein können.

Stattdessen ist %code% schneller als eine "for" - oder "while" -Schleife, die Daten bei jeder Iteration von einem Objective-C-Objekt mithilfe eines Objective-C-Methodenaufrufs abruft.

Dadurch werden die Daten stapelweise abgerufen, wodurch der Aufwand für den Aufruf einer Methode bei jeder Iteration reduziert wird. Das Entfernen des Methodenaufrufs aus dem inneren Teil der Schleife hat auch Vorteile bei der Compiler-Optimierung.

    
___ tag123fasterumation ___ Eine Objective-C-Sprachfunktion, die einen präziseren Aufzählungscode mit einer besseren Leistung als andere Optionen bietet (z. B. NSEnumerator). ___ qstntxt ___

Weiß jemand, ob %code% ist wirklich schneller (als in Laufzeit Leistung) als mit %code% oder (für Arrays) mit einem Integer-Zähler und Schleife durch die Elemente?

Wenn es tatsächlich schneller ist, wie erreicht es diese Geschwindigkeit?

Oder vielleicht bezieht sich die "schnelle" tatsächlich auf schneller in schreiben den Iterationscode?

Vielen Dank im Voraus.

    
___
2
Antworten

Warum ist NSFastEnumeration schnell?

Weiß jemand, ob NSFastEnumeration ist wirklich schneller (als in Laufzeit Leistung) als mit NSEnumerator oder (für Arrays) mit einem Integer-Zähler und Schleife durch die Elemente? Wenn es tatsächlich schneller ist, wie erreicht es...
09.12.2011, 08:36