测量CPU使用率以Xcode呈现UIView

时间:2018-12-01 06:28:34

标签: ios xcode interface-builder

我在Interface Builder中查看了一个笔尖。笔尖内有几个UIStackViews,我之所以使用它是因为它很容易对齐UI元素。一位同事建议我不要使用UIStackViews,因为从计算的角度来看它们是“昂贵的”。另一种方法是手动设置单个元素的约束。

我可以使用哪种Xcode工具来验证同事的主张,我将如何使用它?我发现最好的是this,但我希望有一些更细的东西。有问题的笔尖是UITableViewCell

2 个答案:

答案 0 :(得分:2)

  

从计算的角度来看,它们“很昂贵”

好的,我现在尝试证明那完全是伪造的。

堆栈视图不是魔术。堆栈视图不执行任何特殊的运行时调整。堆栈视图只是一个约束制定者,仅此而已。你也是。堆栈视图所做的所有事情,您都可以做。堆栈视图产生的约束与您自己创建的约束完全相同(假设您甚至知道如何)。因此,约束本身并不昂贵,只是因为堆栈视图使它们成为约束。

因此,让我们谈谈约束的初始生成。好了,堆栈视图通过死记硬背生成其约束。这只是一种简单的公式化方法,它基于诸如堆栈视图的设置和(在某些情况下)已安排的子视图的固有内容大小之类的东西已经给出的参数。因此,实际上完全不需要花费时间即可使堆栈视图吐出它所生成的约束,并且只需执行一次即可。

因此,如果约束的生成不昂贵,并且约束本身也不昂贵,那么支出在哪里?没地方。

有人可能会争辩说,对于使用堆栈视图的特定期望结果而言,不必要的复杂或懒惰,因此,自己进行约束会“更好”。但是“昂贵”在我看来并不是可以针对堆栈视图提出的真正指控。

答案 1 :(得分:0)

在深入研究时,我发现了一个名为LayoutFrameworkBenchmark的存储库。我在iPhone 7+模拟器上运行了Xcode 12中的基准测试。我收集了数据并将其转储到Google表格中。它确实表明UIStackView是pokey与其他布局方法相比。

我现在明白了为什么两个营地中都有人,但是在现实世界中,除非人眼庞大,否则人眼不太可能注意到其中的很大差异。enter image description here