Ios 测量CPU使用率在Xcode中呈现UIView

Ios 测量CPU使用率在Xcode中呈现UIView,ios,xcode,interface-builder,Ios,Xcode,Interface Builder,我在Interface Builder中查看了nib。在nib中有几个UIStackViews,我使用它是因为它很容易对齐UI元素。一位同事建议我不要使用UIStackViews,因为从计算角度来看,它们“昂贵”。另一种方法是手动设置单个图元的约束 我可以使用什么Xcode工具来验证我同事的断言?我将如何使用它?我所发现的最好的东西是,但我希望有更细粒度的东西。所讨论的nib是一个UITableViewCell 从计算的角度来看,它们是“昂贵的” 好的,我现在试图证明这完全是假的 堆栈视图不是魔

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

我可以使用什么Xcode工具来验证我同事的断言?我将如何使用它?我所发现的最好的东西是,但我希望有更细粒度的东西。所讨论的nib是一个
UITableViewCell

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

好的,我现在试图证明这完全是假的

堆栈视图不是魔术。堆栈视图不执行任何特殊的运行时调整。堆栈视图只是一个约束生成器,不多也不少。你也是。堆栈视图所做的一切,您都可以做。堆栈视图的结果约束与您自己创建的约束完全相同(假设您知道如何创建)。因此,约束本身并不是因为堆栈视图生成约束而变得更昂贵

让我们来讨论约束的初始生成。堆栈视图通过机械方式生成约束。这只是一种简单的公式化方法,基于堆栈视图的设置和(在某些情况下)排列子视图的内在内容大小等已经给出的参数。因此,堆栈视图实际上不需要花费任何时间就可以吐出它生成的约束,而且只需执行一次

因此,如果生成约束并不昂贵,如果约束本身也不昂贵,那么费用在哪里?哪里都没有


有人可能会说,对于特定的期望结果,使用堆栈视图是不必要的复杂或懒惰,因此自己制作约束会“更好”;但在我看来,“昂贵”并不是一种可以针对堆栈视图的真正费用。

在四处挖掘的过程中,我发现了一种称为。我在iPhone7+模拟器上运行了iOS12的基准测试。我收集了数据,并把它放在谷歌的表格里。它确实显示了与其他布局方法相比,
UIStackView
是脆弱的


我现在明白了为什么两个阵营中似乎都有人,但是在现实世界中,人眼不太可能注意到有多大的不同,除非它是一个巨大的集合。

这不是对你问题的回答,但是,你的同事是惊人的、惊人的、令人惊讶的错误:)@Fattie我与之交谈的不同的人对此有不同的看法。我希望找到一个能客观地告诉我谁对谁错的工具。无论如何,我想知道这个工具。关于性能,所涉及的少数基本数学计算是惊人的无关。(如果有人给你一个“不同的意见”,他们不能在7个数量级内进行估计:):)是的,这是一个很好的问题,希望有人能给出一个很好的答案!滚动时只需检查Xcode中的FPS表。如果你是在平滑60 fps你不必担心它。如果没有,你需要使用仪器进行更深的挖掘,是什么导致了滞后。“甚至可能不是自动布局。”法蒂得到了我的答案。我也不高兴:)谢谢你,马特。在28:08的时候,苹果的代表说他们正在开发一种测量自动布局性能的工具,她展示了一个非公开的版本。到今天为止,我还没有在仪器中看到它:(感谢您对这个主题的见解。是的,很多WWDC都是令人向往的。这个工具从未实现过。但您不需要它。您有工具可以查看堆栈视图创建的约束,它们与您将创建的约束相同,那么费用在哪里呢?有相当多的基准显示堆栈视图比手动创建的约束慢。我现在找不到它们,所以可能不再是这样。从未调查过这一点,因为这对我来说从来都不是问题。我唯一的猜测是堆栈视图创建的约束比手动创建的约束多。@Sven如果你能设法挖掘它们,我很乐意看到它们。现在,我倾向于在Matt的阵营中,当一个堆栈可以用一小部分的时间和几乎完美的结果为您创建约束时,手动创建约束对我来说就像是“与编译器战斗”。嗯,这似乎与“自动布局”相同(但是……一切都是自动布局?)实际上我不知道左边的其他条目是什么??:O@Fattie我也有同样的问题。大部分,如果不是全部,都在GitHub上。我喜欢PinLayout。