我一直在努力确定为什么我们的WPF应用程序在我们的生产环境中运行速度比在本地机器上慢大约3倍。我一直在使用我们在生产中使用的一个刀片来测试对设置的各种更改,以尝试获得相同的时间。我们最终将操作系统从Windows Server 2016切换到Windows 10 Pro,并且应用程序在刀片上的运行速度与在本地计算机上一样快。
在远程使用dotTrace进行一些分析之后,我能够确定MeasureOverride和ArrangeOverride在2016年执行的时间比在10上时要多。我们将服务器切换为优先于后台进程的桌面应用程序,并且它们没有变化在执行时间。此外,我们还没有覆盖任何Measure或Arrange方法。我们正在对我们的一些控件使用infragistics,因此他们很可能会覆盖这些控件。
是否有人知道Windows Server 2016的设置或实施细节可能会导致执行时间发生如此剧烈的变化?
编辑: 我们还尝试安装显卡,启用RemoteFX,优化特定表单以减少重绘。此外,我只是继续编写了一个几乎没有任何内容的WPF应用程序,并使用dotTrace在本地执行测量需要8ms,在我们的服务器上执行测量需要750ms。
这是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>
答案 0 :(得分:2)
正如您所发现的那样,您在Windows 10 Pro和Windows Server 2016中使用的“电源计划”存在差异。
安装Windows Server后,使用的默认电源计划可能不是最佳的,具体取决于您获取服务器的功能。
使用平衡电源计划时,运行基于GDI或WPF渲染的应用程序的RDP桌面似乎表现不佳。
(取决于支持......当平衡模式运行时,在功率状态之间切换时,较新或较旧代的CPU可能也会有不同的延迟问题。)