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

Sah*_*bov 2 iphone user-experience emulation windows-phone-7

我并不是要在iPhone与Windows Phone 7之间展开一场战争,也不是在与Windows Phone 7对抗.但我注意到我的两台计算机上的Windows Phone 7模拟器(Beta和CTP)都像是在一个糟糕的网络上运行过去十年的赛扬计算机.

我有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月份出现的设备吗?我讨厌手机上的任何东西都是滞后的用户体验 ; 它只是在我的皮肤下.

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

小智 12

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

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

  • @Michael我是iPhone模拟器的粉丝,但它肯定不会给出"准确性和性能的结合".它提供了良好的准确性和性能*折衷*.我们长期以来一直困扰着在模拟器中运行良好的代码,但甚至不能为设备编译*.(iOS4希望能够清理最后一个.)iPhone模拟器也没有尝试模拟设备的有限内存和性能.这不仅仅是设备速度慢; 它只有一个核心.模拟器使用所有核心.这很好,但这不是一场彻底的胜利. (13认同)

小智 7

男孩,有很多"模拟器是这样的,模拟器就是这样",在阅读它们之后我感到更加困惑,特别是当我们得到建议"事情被"为那台计算机重写"时

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

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

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

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

Rob Napier提到的问题可能与在他的构建中使用本机头文件和库有关(称为AppKit).苹果已经有一些API让错误的SDK出现了问题,我记得在SDK中可以使用NSTask的问题,即使它不在iPhone本身上,例如.我敢肯定这个领域还有其他问题,不理想(尽管很酷)

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

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