【问题标题】:Why is Windows Phone 7 emulator so slow compared to, um, iPhone OS Emulator?为什么Windows Phone 7 模拟器与嗯,iPhone OS 模拟器相比这么慢?
【发布时间】:2011-03-16 17:59:09
【问题描述】:

我并不是要在 iPhone 与 Windows Phone 7 之间挑起一场战争,我也不是要反对 Windows Phone 7。但我注意到我的两台计算机上的 Windows Phone 7 模拟器(Beta 和 CTP)都像运行一样滞后在一台蹩脚的上个十年赛扬电脑上。

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

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

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

如果有原型设备的人可以对此问题发表评论,那就太好了。

【问题讨论】:

  • iPhone 模拟器不是模拟器,信不信由你。
  • 模拟器和模拟器有什么区别?如果模拟器这么好,那为什么没有 WP7 模拟器呢?
  • 无论如何,这些编程有什么关系?
  • @mitjak 因为我目前正在开发 WP7 应用程序!
  • @Rihanna.Rain:基本上效率是不同的,因为模拟器正在模拟要在该计算机上运行的非本地内容,但是,模拟器是通常为非本地重写的软件片段计算机。模拟的(模拟器),不模拟的(模拟器)。模拟器的问题在于它们的效率较低。但是,模拟器给出的结果不太准确(但如果做得很好,那应该没什么大不了的)。

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


【解决方案1】:

那是因为所谓的“iPhone Emulator”是一个模拟器(因此本名是“iPhone Simulator”)。模拟器是为该计算机重新编写的非本地程序。模拟器是非本地程序,没有重写它们,它们是模拟的,需要额外的努力来翻译所有内容以显示正确的内容等。这就是 Windows Phone 7 模拟器比 iPhone 模拟器慢的原因。

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

【讨论】:

  • 所以苹果做了模拟器,是为了兼顾精度和性能,而微软自己写模拟器又不能保证精度,就决定牺牲性能?听起来很对;)
  • 是的。已经有足够的“功能”(如果你知道我的意思)。他们不再需要了。
  • @Michael 我是 iPhone 模拟器的粉丝,但它肯定不会给出“准确性和性能的结合”。它在准确性和性能方面提供了不错的权衡。长期以来,我们一直困扰着在模拟器中运行良好但甚至无法为设备编译的代码。 (iOS4 希望能清除其中的最后一个。)iPhone 模拟器也没有尝试模拟设备的有限内存和性能。不仅仅是设备速度较慢;它只有一个核心。模拟器使用所有内核。这很好,但不是完全的胜利。
  • 当我们不知道性能观察的本质是什么时,我们如何断言这就是答案?请参阅我对 OP 的评论。
  • @Rob - 很好的回复。我在开玩笑,并且对微软采取了廉价的态度,但你已经扭转了局面,提出了一些好的观点。我不知道您提到的事情,并且没有对模拟器做太多事情,但是我会对资源问题感到恼火,特别是如果在设备上运行时没有为设备编译简单的旧东西模拟器。所以我收回它,并为您的回复 +1 :)
【解决方案2】:

男孩,其中一些答案中有很多“模拟器是这个,模拟器是那个”,我在阅读它们后感到更加困惑,特别是当我们收到“为那台计算机重新编写”的建议时

您需要了解的是,iPhone Simulator 是 OPERATING-SYSTEM 模拟器,而不是 DEVICE 模拟器。

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

为设备构建时,您正在为 ARM CPU 进行编译。您链接到用于 ARM CPU 的特殊库,这些库同样实现了 UIKit。

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

Rob Napier 提到的问题可能与在他的构建中使用本机头文件和库有关(称为那些 AppKit)。 Apple 让一些 API 渗入了错误的 SDK,我记得 NSTask 在 SDK 中可用时存在问题,即使它不在 iPhone 本身上也是如此。我确信这个领域还有其他问题,它并不理想(虽然它很酷)

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

在我看来,这种 cpu 仿真方法的唯一优势是您可以获取完全相同的二进制文件并在设备和 PC 之间移动它并在两者上运行它。苹果模拟器方法要求您为每个平台重建二进制文件。就我个人而言,即使是在我的“最底层 MacMini”上,我的构建时间也非常短,以至于在我切换平台时重新构建都不是问题。

【讨论】:

    【解决方案3】:

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

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

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

    但是,图形性能完全是另一回事。 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 在下面断言 的评论“无论如何,除非 Microsoft 拥有可以同时针对 Phone CPU 和常规 Windows PC CPU 的编译器工具集,否则它们会在 CPU 级别而不是在操作系统级别。”

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 还需要兼容 wddm1.1 的驱动程序 - 可以在 dxdiag,显示 1,右下角查看
      【解决方案5】:

      测试版似乎引入了problem 影响某些人的系统,因此 GPU 加速在模拟器中不起作用。症状是缓慢呈现,这是意料之中的。我建议在调查问题时将您的系统详细信息添加到线程中,以便最好地解决您的系统问题。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          有关此主题的官方 MS 文档提供了缓慢的原因。

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

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

          【讨论】:

          • 实际上,在此页面上:msdn.microsoft.com/en-us/library/ff402567(v=VS.92).aspx 他们说“您无法精确模拟 Windows Phone 设备的性能,因为模拟器的性能部分取决于不影响不同设备性能的因素物理设备,例如当前操作系统、CPU 和可用系统内存”。然后他们继续咕哝着可选择获得“硬件辅助虚拟化”。
          • @Jeff:您的意思是 i5 500 系列和 i7 CPU 附带的英特尔虚拟化技术吗?
          • 其实我也不知道。我只是引用了微软以他们通常的信息量较少的方式所说的话,要求你去查看一堆其他链接的页面来了解简单的事实。他们一说“你不能精确地模拟……”,我就停止了对它的兴趣,因为这回答了手头的问题,从马嘴里。微软不声称能够精确模拟设备的性能;也许通过“与实际设备相当的性能”,他们的意思是“会经常和随机地崩溃。;-)
          • 仍在根据该线程中的事实寻找一些基础。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-02
          • 2013-05-03
          • 2011-10-21
          • 1970-01-01
          • 2010-12-16
          • 2011-11-12
          相关资源
          最近更新 更多