【问题标题】:What might cause a performance drop after migrating a WPF project from 3.5 to 4.0?将 WPF 项目从 3.5 迁移到 4.0 后,什么可能导致性能下降?
【发布时间】:2011-05-11 19:15:14
【问题描述】:

当我将应用程序编译到框架的 4.0 版本时,UI 性能直接下降。例如,打开一个包含可能有 6 个 Label 和 TextBox 控件的 Grid 的 Expander 从近乎瞬时变为 3-4 秒,然后在它呈现网格的第二列(可编辑控件)和首先(他们的标签)。

如果我退回到 3.5,一切都会回到原来的样子:打开 Expander 和查看其内容之间几乎没有延迟,并且网格中的标签呈现得如此之快,以至于您看不到它发生。

当然,有上百万种可能导致这种情况发生的事情。我想我希望有人能告诉我我应该从哪里开始寻找。我现在并不特别需要升级到 4.0,所以我没有很大的动力去深入分析这头野兽,但是如果我在 3.5 时积累技术债务我想知道。

【问题讨论】:

    标签: c# wpf performance .net-3.5 .net-4.0


    【解决方案1】:

    也许您正在使用或误用 WPF 4.0 的一项新功能?

    我会先调查此列表,看看是否有任何远程适用于该应用。

    祝你好运

    What's new in WPF 4.0 (list)

    【讨论】:

    • 为 3.5 编写的应用程序似乎不太可能滥用或使用 4.0 中的新功能。
    【解决方案2】:

    这确实是一个奇怪的事件,我现在已经将两个重型 WPF3 应用程序迁移到 4 没有问题(忽略几个资源问题),但如果有的话,它可以很好地提高我们的运行时性能。

    虽然不是直接回答您的问题,但当我们转移到 WPF 4 时,我关注了 the write up by Paul Harrington。我还花了很多时间在 the WPFPerf tool 上 - 我知道您不想配置文件!

    我唯一能想到的另一件事是 WPF4WPF3.5 中图形渲染层的变化。这导致其中一位测试人员意识到他的测试盒正在软件渲染中运行(由于图形驱动程序更新错误,硬件加速被禁用)。 RenderOptions.ProcessRenderMode 是您的朋友来这里查看。但我猜你无论如何都会使用相当不错的工具包:)

    【讨论】:

      【解决方案3】:

      您可能正在使用为 .NET 3.5 编译的 DLL,它会在构建需要它的类型之一时强制加载大量 3.5 DLL。检查以确保所有 DLL 都是 4.0-only。

      【讨论】:

        猜你喜欢
        • 2020-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        相关资源
        最近更新 更多