iOSアプリ開発においてパフォーマンスを気にするなら、標準Frameworkのうちどのクラスがレンダリングの際にCPUに依存してしまうのかを理解するのはすごく大事なことだと思います。少し古いですが参考になる記事を見つけたので重要だと感じた部分をピックアップします。
https://robots.thoughtbot.com/designing-for-ios-graphics-performance
とても有名な記事だと思います。(AppleのUIKit開発者Andy Matuschakが情報提供してくれた?)
UIKitの構造
- UIKit
- CoreAnimation
- OpenGLES
- GPUを使用
- Cで書かれている
- CoreGraphics
- CPUを使用
- Cで書かれている
- OpenGLES
- CoreAnimation
Offscreen drawing とは
GPUに渡す前に、バックグランドでCPUを使ってビットマップを生成する処理。
Offscreen drawing が起こる条件
- CoreGrapics(接頭語がCGのクラス)
- drawRectメソッド
- shouldRasterizeプロパティがYESのCALayer
- setMasksToBoundsを使ってマスクしているか、setShadow*を使って影をつけているCALayer
- CoreTextを含む、画面に表示されるあらゆるテキスト
- GroupOpacity(UIViewGroupOpacity)