WPF应用程序性能-在英特尔上表现良好,在AMD上表现极慢

WPF应用程序性能-在英特尔上表现良好,在AMD上表现极慢,wpf,performance,Wpf,Performance,我们有一个WPF应用程序(.NET 4.5),它在我们尝试过的大多数环境中运行得非常好。然而,在一些基于AMD处理器的平台上,性能是一场噩梦,应用程序实际上无法使用。除了处理器类型Intel vs AMD之外,我们还在Azure和Amazon虚拟机上推出了规格相同的平台。我们有一台内部运行AMD的笔记本电脑,这也很可怕 我们有一台带有AMD处理器的机器,使用ATI视频卡。那里的表演很正常。我们内部的笔记本电脑使用车载视频,虚拟机使用虚拟机本身的VGA(两者的性能都很差) 我看过PriorityB

我们有一个WPF应用程序(.NET 4.5),它在我们尝试过的大多数环境中运行得非常好。然而,在一些基于AMD处理器的平台上,性能是一场噩梦,应用程序实际上无法使用。除了处理器类型Intel vs AMD之外,我们还在Azure和Amazon虚拟机上推出了规格相同的平台。我们有一台内部运行AMD的笔记本电脑,这也很可怕

我们有一台带有AMD处理器的机器,使用ATI视频卡。那里的表演很正常。我们内部的笔记本电脑使用车载视频,虚拟机使用虚拟机本身的VGA(两者的性能都很差)

我看过PriorityBoostEnabled和RenderMode,它们没有帮助我们在网上搜索类似的问题,但没有发现太多

serverfault上有一个类似的线程没有得到太多关注。这是一个标准的.NET应用程序,我不认为它会成为一个编码问题。我从来没有在任何代码中加入任何东西来针对不同于基于Intel的CPU的AMD进程


以下是serverfault线程:

这不是一个非常具体的答案,但几乎可以肯定地归结为WPF是否检测到它可以在硬件中渲染。如果WPF掉到软件渲染,有许多UI元素将绝对破坏性能(即掉阴影)

这里有更多的信息

在VM中,您可能无法访问任何硬件渲染,这将导致性能问题。在您正在查看的AMD硬件上,车载图形系统可能不支持Direct X 7.0或更高版本,这将导致软件渲染


希望这能有所帮助。

我不认为这是一个编码问题。
如果这不是一个编码问题,那么这可能是一个错误的问题。如果这是一个编码问题,你能拿出一个简单的演示吗?@MattBurland也许在AMD上有一些设置需要修改。注册处或谁知道呢。我见过更奇怪的事情。serverfault上的帖子毫无进展,可能其他开发人员也遇到过类似的问题,可以提供一些见解,所以我不认为这是个错误的地方。该应用程序非常庞大,很难复制。我知道这会让它变得更难,但值得在这里抛开。根据这一描述,我们为您调试这个的机会真的很小。我可以肯定地告诉你,这不是AMD对英特尔,因为我有两个平台,从来没有遇到任何问题与WPF。我们可以打赌问题到底是什么,但没有任何代码或附加信息,这是一个非常模糊的描述。试着从我们的角度来阅读你的文章——你能给我们一些建议吗?这是所有WPF应用程序还是仅仅是这一个?@walther我理解这一点。我们在Azure、Amazon和本地创建了两个VMs spec for spec。它只在AMD是Azure中的处理器的情况下运行得很差,并且在我们内部拥有的AMD硬件上以这种方式运行。我知道这很模糊,很难调试,但我们看到的唯一区别是Intel和AMD。运行AMD的笔记本电脑是x64和DirectX 11。我确实检查了RenderMode,正如我在问题中简要提到的那样。AMD x64单元上报告的渲染模式为2,性能较差,在标准的Win7、Win7 32和64位Intel环境中,我得到的渲染模式为2。@Matt您如何检查渲染模式?您是否在运行时使用?在启动时,我提示了渲染模式,与文章中在MessageBox@Matt不幸的是,我仍然认为这是一个图形问题。可能是驱动程序不兼容,或者类似地。AMD\ATI graphics有许多记录在案的WPF性能问题案例。即使系统检测到它可以在第2层渲染,也不能保证驱动程序不会将处理卸载到CPU,或者DX本身可能会将某些计算和纹理卸载到系统内存。