Wie viele Möglichkeiten zur programmgesteuerten Berechnung der FPS (Frames per Second) einer iOS-App?

Seit wir reden überprogrammatically, Instrument sind nicht unter meiner Berücksichtigung.

Einige im Voraus aufgeführte Referenzen:

Calculate fps (Bilder pro Sekunde) für die iPhone-App FPS auf iOS-Bildschirm anzeigen (ohne Instrumente)ei welcher Framerate werden auf der iOS-Benutzeroberfläche Animationen ausgeführ 1. @ Verwend CADisplayLink

Nach Angaben des Dokuments,

Die Eigenschaft duration gibt die Zeitspanne zwischen Frames an. Sie können diesen Wert in Ihrer Anwendung verwenden, um die Bildrate der Anzeige zu berechnen ...

So füge ich in meinem Demo-Projekt einen displayLink zu mainRunLoop für UITrackingRunLoopMode hinzu:

self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(screenDidUpdated)];
[self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:UITrackingRunLoopMode];

und benutzeduration, um FPS zu berechnen. Aber aus meiner Erwartung heraus, dieduration ist immer 0.016667 (~ FPS 60), unabhängig davon, ob die tableView reibungslos scrollt oder nicht.

Wie ich die tableView Verzögerung mache, ist das Hinzufügen einer Zeile in- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath:

NSData *data = [NSData dataWithContentsOfURL:url];

ann wandte ich mich andisplayLink.timestamp, und es hat funktioniert

2. BeobachtendrawRect:?

Meine zweite Idee ist, @ zu beobachtdrawRect:, Dachte ich, wenn die tableView scrollt, seindrawRect: würde Frame für Frame aufgerufen, dann könnte ich die FPS nach dem Zeitunterschied zwischen @ berechndrawRect: Berufungen.

Aber es ist fehlgeschlagen, weil dasdrawRect: wurde nur einmal aufgerufen (während Zellen für viele Male). Dieser Weg ähneltUsing CADisplayLink, aber vielleicht habe ich die falsche Position / Methode gewählt (wiedrawRect:) zu beobachten, eine empfohlene Methode für mich zu beobachten?

FragenWie messen die Instrumente die FPS genau?Ist der doc sagteusing duration to calculate FPS falsch Was ist die richtige / beste Methode, um die FPS zu berechnen?

Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage