gpt4 book ai didi

wpf - 仅重写 MeasureOverride 会影响性能吗?

转载 作者:行者123 更新时间:2023-12-04 16:01:31 26 4
gpt4 key购买 nike

我有一个来自 WrapPanel 的派生类,它覆盖了 MeasureOverride 方法。我正在构建我的应用程序的骨架/原型(prototype),首先进行 View 模型和 View 以获得屏幕流等方面的概念,同时让其他人提供有关设计的反馈。所以它是一个非常轻量级的应用程序。

我注意到点击特定按钮需要很长时间才能显示下一个屏幕,因此我分析了该应用程序(抽样)。除了 Startup 方法之外,MeasureOverride 是占用时间最多的单一方法。这是我的代码:

public class GroupWrapPanel : WrapPanel
{
public const double ItemSize = 120.0;

protected override Size MeasureOverride(Size availableSize)
{
var numberOfRows = (availableSize.Height / ItemSize);
var numberOfCols = (Children.Count / numberOfRows) + 1;

var newSize = new Size(numberOfCols * ItemSize, availableSize.Height);

return base.MeasureOverride(newSize);
}
}

所以我注释掉了整个覆盖,现在它执行得很快——MeasureOverride 不在占用大部分时间的方法列表中。我只是放入了一个除了调用基类之外什么都不做的覆盖。现在 MeasureOverride 再次出现,需要相当长的时间。

我做错了什么吗?

最佳答案

如果您建议这样做:

protected override Size MeasureOverride(Size availableSize)
{
return base.MeasureOverride(newSize);
}

导致显着放缓,这似乎不太可能。如果你真的使用和不使用这种微不足道的覆盖进行分析并注意到不同的结果,我认为你的分析器上很可能有“只是我的代码”或类似设置,或者你已经过滤了你没有看到当您看到 GroupWrapPanel.MeasureOverrideWrapPanel.MeasureOverride 的开销。

专家组的测量是否真的占用了大量时间是另一回事,但这是可信的 - 我建议深入调用树并找出调用的贡献,您可能会发现某些子项目的测量成本很高。

关于wpf - 仅重写 MeasureOverride 会影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15309355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com