为什么VM中的WPF应用程序的性能优于在OS中直接运行的应用程序?

Mar*_*eIV 6 wpf virtual-machine windows-7-x64

我们有一款更高端的Win7-64戴尔精密工作站笔记本电脑,配备i7,8公差硬盘,高清硬盘空间以及运行专用的AMD显卡.这台机器大约一个月了.这是我们当时可以获得的最高端之一.

我们遇到的是当我们运行我们的WPF/SQL Server(本地)应用程序时,它往往会挂起并停止,有时会完全崩溃,但大多数情况下只是悬挂直到我们强行关闭它.但是,在同一台计算机上运行的VMware虚拟机中运行的完全相同的安装程序运行完美.实际上,VM安装比其他机器上的许多本机安装运行得更好.它非常活泼,没有任何悬念或犹豫.但是,同样的应用程序,同样的安装程序直接在操作系统中运行,我们回到上面的问题.

我们已经运行了所有Windows更新....我们已经尝试完全重新安装所有内容...... .NET框架,SQL Server,视频驱动程序,甚至更新BIOS并检查流氓服务但它仍然会发生.

起初我们认为这是赛门铁克AV的实时保护,因为当我们第一次关闭它时,事情开始变得快速(并且当它自动重新启用自己进一步推断这个假设时减速并冻结)但是它刚刚开始减速再次,更令人惊讶的是,同样的AV在VM中运行没有问题!检查了例外,但没有.

我们甚至尝试强制WPF在软件渲染模式下运行,但同样没有.

现在奇怪的是,这似乎只发生在这个和其他一些机器上,但我们似乎找不到任何共同点,除非它们都运行Win7 64位.因此,我们完全不知道从哪里开始.由于大多数都是挂起而不是崩溃,我们甚至无法查看崩溃报告.

所以任何人都可以告诉我们我们还能看到什么?这使得我们发布了一份为期三年的主要版本的软件发布,所以说这是一个显示阻止者将是轻描淡写.我们已经被困了大约一个月而且无处可去.

Mar*_*eIV 1

找到了!!结果发现 .NET 4.0 中存在一个关于 UI 自动化和 MS 引入的更改的错误。这是信息和修复!(注意:即使你打电话给微软,他们也会向你发送一个链接,但它总是一个损坏的链接。我设法手动追踪到这个。)

注意:他们的文章讨论了导致此行为的特定情况,但如果您用 google 搜索,您会发现大量与这些 DLL 相关的挂起问题。最新的是他们承诺在 .NET 4.5 运行时中进行修复(来自关于此问题的 MS 帖子)。

这是知识库文章... http://support.microsoft.com/kb/2484841/en-us

...这是实际的修补程序。 http://archive.msdn.microsoft.com/KB2484841/Release/ProjectReleases.aspx?ReleaseId=5583

显然虚拟机没有受到这个问题的影响。我们不确定虚拟机是否应用了修补程序,或者这种情况是否只发生在非虚拟机上。尽管如此,这还是解决了所有问题,并且该应用程序现在又变得敏捷了。(伙计,追踪起来真有趣!呃!!)