MeasureOverride 和 ArrangeOverride 在 windows server 2016 上的执行速度比 windows 10 pro 慢 3 倍

MeasureOverride and ArrangeOverride execute 3 times slower on windows server 2016 vs windows 10 pro

我一直在努力确定为什么我们的 WPF 应用程序在生产环境中的运行速度比在本地计算机上慢大约 3 倍。我一直在使用我们在生产中使用的 blades 之一来测试对设置的各种更改,以尝试获得相同的时间。我们最终将 OS 从 Windows Server 2016 切换到 Windows 10 Pro,应用程序在 blade 上的运行速度与在我的本地计算机上一样快。

在远程使用 dotTrace 进行一些分析后,我能够确定 MeasureOverride 和 ArrangeOverride 在 2016 年的执行时间比在 10 年的执行时间长。我们将服务器切换为更喜欢桌面应用程序而不是后台进程,它们是执行时间没有变化。此外,我们还没有覆盖任何 Measure 或 Arrange 方法。我们正在为我们的一些控件使用基础设施,因此它们很可能已经覆盖了这些。

有谁知道 Windows Server 2016 的设置或实施细节可以解释执行时间的如此剧烈变化?

编辑: 我们还尝试安装显卡、启用 RemoteFX、优化特定表单以减少重绘。此外,我只是继续分析了一个几乎没有任何内容的 WPF 应用程序,并使用 dotTrace 在本地执行测量需要 8 毫秒,在我们的服务器上执行测量需要 750 毫秒。

这是xaml

<Window x:Class="StockWpfApplication.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:StockWpfApplication"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <TextBlock Text="Text" Height="20" Width="50" HorizontalAlignment="Left"/>
    <Button Content="Button" Height="20" Width="50"/>
</Grid>

2016 年分析:

10 专业分析:

如您所见,您在 Windows 10 Pro 和 Windows Server 2016 中使用的 "Power Plans" 存在差异。

安装 Windows 服务器后,使用的默认电源计划可能不是最佳的,具体取决于您让服务器执行的操作。

RDP 桌面 运行 使用平衡电源计划时,基于 GDI 或 WPF 呈现的应用程序似乎表现不佳。

(取决于支持....较新或较老一代的 CPU 在平衡模式运行时在电源状态之间切换时也可能有不同的延迟问题)。