【发布时间】:2017-09-03 18:00:48
【问题描述】:
我正在为带有核心动画的 macOS 构建一个滚动密集型应用程序。我一直在使用CA Instrument 来帮助优化。在执行此操作时,我注意到一些奇怪的事情......我的应用在 CA Instrument 调试工具下运行时的帧速率比正常运行时更好。
我发现根本原因是 CA Instrument 工具将 CA_LAYER_SURFACE 环境变量设置为 0。这样做会更改 cocoa 用于渲染核心动画层的代码路径,因此我的应用程序从 55fps 变为 60fps 并且明显滚动更流畅。
谁能告诉我更多关于这个 CA_LAYER_SURFACE 标志的信息。从上面链接到文章似乎包含它会启用旧行为。但如果是这样的话,为什么旧的行为会被新的较慢的行为所取代呢?如果我决定在我的生产应用程序中将此标志设置为 CA_LAYER_SURFACE=0,会有什么权衡?
谢谢!
更新
一旦我改变了创建屏幕外渲染上下文的方式,大部分性能提升就消失了(即两个版本都很快),如下所述:
Fastest way to draw offscreen CALayer content
我还发现了更多关于标志的信息,如我在下面发布的答案中所述。
【问题讨论】:
标签: macos core-animation