Macos NSView wantsLayer的性能
如果我创建一个空白的macxcode项目,并在主窗口中并排布局500个简单的Macos NSView wantsLayer的性能,macos,cocoa,nsview,appkit,Macos,Cocoa,Nsview,Appkit,如果我创建一个空白的macxcode项目,并在主窗口中并排布局500个简单的NSView对象,它的加载速度会非常快。如果我在每个子视图上设置wantsLayer=YES,性能会显著下降几秒钟。为什么在概念上是这样?层似乎比常规的旧NSView更快而不是更慢。通过支持这么多视图的层,您为系统提供了更多的工作。图层背衬允许图形加速(用于绘图),但它会给布局之类的事情增加一些开销,更不用说仅仅创建它们并将它们放在屏幕上了。如果使用得当,这其实不是什么大问题 通常,如果您一次要在屏幕上管理这么多“东西”
NSView
对象,它的加载速度会非常快。如果我在每个子视图上设置wantsLayer=YES
,性能会显著下降几秒钟。为什么在概念上是这样?层似乎比常规的旧NSView更快而不是更慢。通过支持这么多视图的层,您为系统提供了更多的工作。图层背衬允许图形加速(用于绘图),但它会给布局之类的事情增加一些开销,更不用说仅仅创建它们并将它们放在屏幕上了。如果使用得当,这其实不是什么大问题
通常,如果您一次要在屏幕上管理这么多“东西”,您将拥有一个以层为基础的托管视图,该视图管理自己的子层树。“但是基于视图的表视图呢?”你问道。诡计,诡计,我说!表视图实际上并不保留它们管理的所有单元格视图;它们有效地重用它们,只保留足够的内容来表示屏幕上的内容和/或周围的动画
因此,我想说,这不是一个真正的问题,因为它不是一个特别好的方法,抛出500+层备份视图布局和绘图开始。:-) 仪器应该告诉你:/好主意,我看了一眼,什么都看不懂。我的意思是,我知道它运行得非常慢,我希望在调用堆栈中找到一些东西来说明原因,但无法。我想知道是否有人从概念上知道答案。这不是我正在考虑的方法,这只是我试图理解的方法。你搞定了。今天早上工作的人也解释了这一点。谢谢