我正在爲核心動畫構建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
我我還發現了更多關於我在下面發佈的答案中所描述的國旗。