首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅仅重写MeasureOverride会影响性能吗?

仅仅重写MeasureOverride会影响性能吗?
EN

Stack Overflow用户
提问于 2013-03-09 17:49:48
回答 1查看 2K关注 0票数 3

我有一个重写MeasureOverride方法的来自WrapPanel的派生类。我正在构建我的应用程序的框架/原型,首先做视图模型和视图,以获得屏幕流等概念,也让其他人提供设计反馈。所以它是一个非常轻量级的应用程序。

我注意到,点击一个特定的按钮需要很长时间才能显示下一个屏幕,所以我分析了这个应用程序(采样)。仅次于启动方法,MeasureOverride是占用时间最多的单一方法。这是我的代码:

代码语言:javascript
复制
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又在那里了,花了相当长的时间。

我做错了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2013-03-09 18:47:29

如果您建议这样做:

代码语言:javascript
复制
protected override Size MeasureOverride(Size availableSize)
{
    return base.MeasureOverride(newSize);
}

导致明显的减速,这似乎是极不可能的。如果您真的在使用和不使用该琐碎覆盖的情况下进行了分析,并且注意到了不同的结果,我认为很可能您的分析器上有一个"just my code“或类似的设置,或者您已经进行了过滤,以便在查看GroupWrapPanel.MeasureOverride时不会看到WrapPanel.MeasureOverride的开销。

面板的测量是否真的占用了大量的时间是另一回事,但是可信的-我建议在调用树中挖掘并找出调用的贡献,您可能会发现一些子项的测量成本很高。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15309355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档