为什么Windows Phone 7仿真器与iPhone OS仿真器相比如此之慢?

时间:2010-07-16 02:39:51

标签: iphone emulation windows-phone-7 user-experience

我不是要在iPhone与Windows Phone 7之间展开一场战争,也不是在与Windows Phone 7发生战争。但我注意到我的两台计算机上的Windows Phone 7模拟器(Beta和CTP)都在运行,因为它正在运行在过去的十年Celeron计算机上。

我有2台电脑:Macbook Pro 13“(2010型号),配备2.4GHZ Core 2 Duo,4GB RAM和华硕G1,配备2.0 GHz Intel Core 2 Duo,3GB RAM,全新安装Windows 7。

现在,Mac OS X上的iPhone模拟器更加流畅,加载速度更快,感觉更好。

那么为什么Windows Phone 7模拟器如此之慢?这就是我们应该期待的10月份出现的设备吗? 我讨厌手机上的任何东西都是滞后的用户体验;它只是在我的皮肤下。

如果有原型设备的人可以评论这个问题,那就太好了。

7 个答案:

答案 0 :(得分:12)

这是因为所谓的“iPhone模拟器”是一个模拟器(因此真正的名字是“iPhone模拟器”)。模拟器是为该计算机重写的非本机程序。仿真器是非本机程序,不会重写它们被模拟,需要额外的努力来翻译所有东西以显示正确的东西等。这就是Windows Phone 7仿真器比iPhone模拟器慢的原因。

但是,由于模拟器不能像模拟器那样准确地表示设备,因此可以获得更好的错误结果,因为这些内容在模拟器中被重写,但所有内容都保存在模拟器中。但是,即使这样说,你通常也不需要担心。

答案 1 :(得分:7)

男孩,有很多“模拟器是这样的,模拟器就是这样”,在阅读它们之后我会感到更加困惑,特别是当我们得到“重新为该计算机重写”的建议时< / p>

您需要了解的是iPhone模拟器是一个操作系统模拟器,而不是DEVICE模拟器。

为模拟器构建时,您正在编译Intel x86 CPU。您链接到x86 CPU的特殊库,但它们实现了作为iPhone操作系统一部分的功能(称为UIKit)

为设备构建时,您正在编译ARM CPU。您链接到ARM CPU的特殊库,再次实现UIKit。

这意味着您的代码在两种环境中都以完全“机器”速度运行。没有“模拟CPU”的概念,这可能是Windows Phone 7模拟器正在做的事情,这与多年前的MacOS Virtual PC产品类似(微软从Connectix购买,我记得)

Rob Napier提到的问题可能与他的构建中使用本机头文件和库有关(称为AppKit)。苹果已经有一些API让错误的SDK流入,我记得在SDK中可以使用NSTask的问题,即使它不在iPhone本身上,例如。我确定这个领域还有其他问题,不理想(虽然非常酷)

无论如何,除非Microsoft有一个可以同时针对Phone CPU和常规Windows PC CPU的编译器工具集,否则他们会在CPU级别而不是在操作系统级别进行仿真。

在我看来,这种cpu仿真方法的唯一优势是你可以使用完全相同的二进制文件并在设备和PC之间移动它并在两者上运行它。 Apple模拟器方法要求您重建每个平台的二进制文件。就个人而言,即使在我的“MacMini线”的底线,我的构建时间也很小,每当我切换平台时,重建都不是问题。

答案 2 :(得分:4)

Windows Phone模拟器实际上是为在虚拟化环境中运行的x86编译的Windows Phone 7操作系统。它使用Microsoft的VirtualPC / VirtualServer / Hyper-V衍生技术。因此,它实际上既不是仿真(没有ARM到x86仿真正在进行)也不是纯仿真。

典型的Windows Phone 7设备将运行接近1GHz的ARM处理器。 ARM处理器的仿真(如在CPU仿真中)需要非常强大的x86处理器。使用可视化的策略允许OS以原生x86速度执行。用托管(.NET)代码编写的应用程序由操作系统上基于x86的.NET运行时执行。

因此,典型PC(~1.5 - 3GHz)上的代码性能通常应超过实际基于ARM的WP7设备上的代码性能。

然而,GRAPHICS的表现是一个完整的'故事。 Windows Phone 7是在Direct3D堆栈上从头开始构建的。核心操作系统和所有图形一直到Silverlight和XNA运行时都使用Direct3D。在Windows Phone仿真器中,低级D3D图形被“传递”到主机PC的D3D实现。人们看到Windows Phone Emulator性能出现的许多问题是由于主机PC图形适配器或驱动程序性能不佳造成的。

有关一些问题排查提示,请参阅此论坛回复。 http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/c4754ebd-f688-4c33-972a-a578b9db12ff

编辑:解决Jeff的评论下面断言“无论如何,除非微软有一个可以同时针对手机CPU和常规Windows PC CPU的编译器工具集,否则他们会在CPU级别停留仿真,而不是在操作系统级别。“

所有Windows Phone 7应用程序&amp;游戏是基于.NET的,因此与CPU无关。重复我上面所说的: Windows Phone 7模拟器不在CPU级别模拟。它在虚拟机中运行操作系统的本机x86编译版本,并运行将在物理设备上运行的完全相同的应用程序“二进制”(.XAP文件)。

答案 3 :(得分:2)

您需要使用directx 10显卡才能获得最佳性能。

答案 4 :(得分:2)

beta似乎引入了problem影响某些人的系统,因此GPU加速在模拟器中不起作用。症状是慢速渲染,这是预期的。我建议您在线程中添加系统详细信息,同时在系统中查找解决问题的最佳机会。

答案 5 :(得分:0)

我认为我们需要澄清这个问题的含义,以便从中收集任何类型的有意义的答案。目前,我们都可以很好地谈论不同类型的表现观察,这可能会使这更多地成为一场宗教辩论。我已经为此效果添加了评论,但您必须点击“更多”才能看到它。

答案 6 :(得分:0)

关于这个问题的官方MS文件提供了缓慢的原因。

“Windows Phone模拟器旨在提供与实际设备相当的性能”

http://msdn.microsoft.com/en-us/library/ff402563(v=VS.92).aspx