iOS: Methode 25-mal langsameres Testen auf dem Gerät im Vergleich zum Simulator

8

Ich habe eine Methode, die unglaublich langsam im Gerät (iPhone3G) im Vergleich zum Simulator läuft.

Während der Simulator ungefähr 100 Ausführungen der Methode in 1 Sekunde handhaben kann, kann das Gerät nur 4 mal die Methode in einer Sekunde ausführen.

Was kann es so lächerlich machen?

CODE: Hinweis: Die Methode berechnet eine benutzerfreundliche Zeichenfolge aus zwei Daten (Startdatum und Enddatum eines Ereignisses).

%Vor%     
David Casillas 29.02.2012, 14:16
quelle

5 Antworten

17

iOS-Geräte sind erheblich weniger leistungsstark als der Computer, auf dem Sie den Simulator ausführen. Der iOS-Simulator emuliert den ARM-Prozessor nicht und führt ihn daher mit voller Geschwindigkeit aus.

Darüber hinaus ist der Grund, dass diese bestimmte Methode so langsam ist, die Erstellung der Objekte NSDateFormatter und NSCalendar . Diese sind ziemlich teuer zu erstellen und sollten in einer Instanzvariablen / Eigenschaft zwischengespeichert werden, wenn Sie sie mehrmals verwenden möchten.

    
DHamrick 29.02.2012, 14:21
quelle
13

Sie sollten diese Variable zwischenspeichern, sie ist sehr langsam. Rufen Sie diese Methode einmal auf.

%Vor%     
NeverBe 29.02.2012 14:20
quelle
1

Es ist normal, dass der Simulator für INTEL-Prozessoren kompiliert wird, wenn Sie auf dem Simulator testen, dass Ihre App für INTEL gebaut wird und alle Ihre CPU-Leistung nutzt. Es ist also viel schneller.

Sie können das Instrument verwenden, um zu sehen, welcher Teil verlangsamt wird.

    
Ganzolo 29.02.2012 14:20
quelle
0

Vermeiden Sie die Verwendung von NSDateFormatter in der Schleife.

Ich habe es behoben, indem ich date in string mit stringWithFormat konvertiert habe und dann die Komponenten mit componentsSeparatedByString gebrochen habe.

%Vor%

Dadurch konnte ich meine Schleife in weniger als einer Sekunde ausführen.

Hoffe, das wird helfen.

    
Sumoanand 20.10.2014 19:01
quelle
0

Das Instanisieren von NSDateFormatter und NSCalendar sind keine nicht trivialen Operationen. Das Erstellen eines NSDateFormatter kann bei einem iPhone 4s bei meinen Tests bis zu 250ms dauern. Vermeiden Sie das erneute Erstellen dieser Objekte, indem Sie sie entweder als Klassen-Ivars oder statische Objekte beibehalten, wenn dies möglich ist. Wiederverwendung wann immer Sie können.

    
vsanthanam510 04.07.2015 02:43
quelle

Tags und Links