6 Stimmen

Messung der Ladezeit von iPhone-Programmen

Ich bin gerade dabei, eine iPhone-App für sehr kurze Ladezeiten zu optimieren und frage mich, wie das geht:

Gibt es eine Möglichkeit, die Ladezeit einer iPhone-App zu messen, von dem Zeitpunkt, an dem der Benutzer auf das Symbol tippt, bis zu dem Zeitpunkt, an dem die App nutzbar ist (oder zumindest -viewDidLoad aufgerufen wird)?

Idealerweise würde dies im Gerät und im Simulator funktionieren, aber wenn jemand eine Möglichkeit gefunden hat, diese Zeit ausschließlich im Simulator zu messen, wäre das zumindest ein Anfang.

Und nein, "Stoppuhr" oder "ein Mississippi, zwei Mississippi" zählen nicht :-)

0 Stimmen

Sie können die Zeit nicht einfach sofort nach applicationDidLaunch und protokollieren dann die Zeit, zu der viewDidLoad angerufen wird?

2voto

Purpletoucan Punkte 6282

Starten Sie einen Timer in der init-Methode des App-Delegaten und stoppen Sie ihn, wenn die viewDidAppear:-

Timer starten mit:-

NSDate *startTime = [NSDate date];

...und enden mit:-

NSTimeInterval elapsedTime = [startTime timeIntervalSinceNow];
NSLog(@"Startup tasks: %f", -elapsedTime);

Dies geschieht nicht sofort, wenn das Symbol angetippt wird, sondern erst, wenn Sie mit der Arbeit beginnen. In den Protokollen der Debugger-Konsole können Sie wahrscheinlich einen früheren Zeitpunkt sehen?

2voto

termorrell Punkte 21

Im Rahmen der WWDC 2016 kündigte Apple eine neue Umgebungsvariable an, die als Teil der Beta 2 verfügbar ist und mit der Sie die Startzeit einer Anwendung aufzeichnen können.

Ein Problem mit den obigen Antworten ist, dass sie die Zeit vor dem Hauptvorgang nicht berücksichtigen, in der Bilder geladen werden und Rebase- und Bindungskorrekturen stattfinden.

Wenn Sie die Variable DYLD_PRINT_STATISTICS = 1 erhalten Sie die Vor-Hauptzeit in der Konsole angezeigt.

Session 406 von der WWDC 2016 befasst sich mit dieser variablen Nutzung und der Interpretation der Ergebnisse.

1voto

dasdom Punkte 13829

Setzen Sie NSLog(@"started loading"); zu Beginn der AnwendungDidFinishLauching und NSLog(@"finished loading"); in der viewDidAppear des App-Delegaten. In der Debugger-Konsole erhalten Sie etwas wie

2010-11-21 17:16:06.278 Phy[9157:207] started loading
2010-11-21 17:16:06.301 Phy[9157:207] finished loading

Daher benötigte der Simulator 0,03 Sekunden, um die Anwendung zu starten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X