Engpass in CA :: Transaction :: commit ()

8

Wenn ich den Time Profiler für Interaktionen mit einem UIScrollView (mit vielen Subviews) verwende, sehe ich oft CA::Transaction::commit() im schwersten Stack-Trace. Was ist diese Methode und wie kann ich weniger Zeit damit verbringen?

Screenshot http://oi59.tinypic.com/11goi01.jpg

Meine Vermutung ist, dass Core-Animation-Layer so an die GPU gesendet werden und dass dies beschleunigt werden könnte, indem man die Dimensionen und / oder die Anzahl der CALayer s reduziert, die gerendert werden müssen (dh die Datenmenge) das muss an die GPU gesendet werden).

    
tboyce12 05.06.2014, 23:01
quelle

1 Antwort

3

Deine Vermutung könnte stimmen. Bedenken Sie, dass folgende Dinge typischerweise auch in CATransaction::commit()

erledigt werden
  • Layout von CALayers: layoutSublayers, preferredFrameSize, CALayoutManager
  • alle CAAction s
  • manchmal auch das Rendering der verschiedenen Filter-Eigenschaften eines CALayers
  • wahrscheinlich das Layout der Unteransichten in Ihrer Bildlaufansicht
mahal tertin 06.06.2014, 08:42
quelle