コアアニメーションを備えたmacOS用のスクロール集中型アプリケーションを構築しています。私はCA Instrumentを使って最適化を支援してきました。これを実行している間、私は奇妙なことに気付きました...私のアプリは、CA Instrumentのデバッグツールで動作しているときに、より良いフレームレートを取得し、次に正常に動作します。なぜCA_LAYER_SURFACE = 0はコアアニメーションのパフォーマンスを改善しますか?
CA InstrumentツールがCA_LAYER_SURFACE環境変数を0に設定していることがわかりました。これを実行すると、コアアニメーションレイヤをレンダリングするためにココアが使用するコードパスが変更され、結果的にアプリケーションは55fpsから60fpsになります。はるかにスムーズなスクロール。
誰でもこのCA_LAYER_SURFACEフラグについて詳しく教えてください。上記の記事にリンクされていることから、古い挙動が可能になっているようです。しかし、それが古い行動が新しい遅い行動に取り替えられたのはなぜですか?このフラグをプロダクションアプリでCA_LAYER_SURFACE = 0に設定したままにしておく場合のトレードオフは何ですか?
ありがとうございます!
更新性能向上のほとんどは去って行った
(すなわち、両方のバージョンは高速です)私がここで説明したように、私はコンテキストをレンダリングオフスクリーン作成方法変更後:
Fastest way to draw offscreen CALayer content
Iをまた、私が下に投稿した答えに記述されているように、旗についてもう少し分かった。