Почему эмулятор Windows Phone 7 такой медленный по сравнению с эмулятором iPhone OS? - PullRequest
2 голосов
/ 16 июля 2010

Я не хочу начинать войну между iPhone и Windows Phone 7 и не против Windows Phone 7. Но я заметил, что на обоих моих компьютерах эмулятор Windows Phone 7 (бета-версия и CTP) отстает, как будто он работаетна дрянном компьютере Celeron последнего десятилетия.

У меня есть 2 компьютера: Macbook Pro 13 "(модель 2010 года) с 2,4 ГГц Core 2 Duo, 4 ГБ ОЗУ и ASUS G1 с 2,0 ГГц Intel Core 2 Duo, 3 ГБ ОЗУсо свежей установкой Windows 7.

Теперь эмулятор iPhone в Mac OS X стал намного более плавным, загружается быстрее и лучше себя чувствует.

Такпочему эмулятор Windows Phone 7 такой медленный? Это то, что мы должны ожидать от устройств, которые выйдут в октябре этого года? Я ненавижу больше всего на телефоне медленный UX , он просто получаетпод моей кожей.

Было бы неплохо, если бы кто-то с прототипом устройства мог прокомментировать эту проблему.

Ответы [ 7 ]

12 голосов
/ 16 июля 2010

Это потому, что так называемый «iPhone Emulator» является симулятором (следовательно, настоящее название «iPhone Simulator»). Симуляторы - это неродные программы, переписанные для этого компьютера. Эмуляторы - это не нативные программы, которые не переписываются, а эмулируются, что требует дополнительных усилий для перевода всего, чтобы отобразить нужные вещи и т. Д. Именно поэтому эмулятор Windows Phone 7 работает медленнее, чем iPhone Simulator.

Но, поскольку симуляторы не так точно представляют устройство, как эмулятор, вы можете получить лучшие результаты ошибок, поскольку материал переписывается в симуляторах, но все сохраняется в эмуляторе. Но, даже говоря это, вы обычно не должны беспокоиться об этом.

7 голосов
/ 16 июля 2010

Мальчик, есть много "эмуляторов это, симуляторы это" в некоторых из этих ответов, и я чувствую себя более смущенным после прочтения их, особенно когда мы получаем предположения, что вещи "переписаны для этого компьютера"

Что вам нужно понять, так это то, что iPhone Simulator является симулятором OPERATING-SYSTEM, а не имитатором DEVICE.

Когда вы создаете симулятор, вы компилируете процессор Intel x86. Вы ссылаетесь на специальные библиотеки, предназначенные для процессора x86, но реализующие функции, являющиеся частью операционной системы iPhone (называйте это UIKit)

Когда вы собираете устройство, вы компилируете процессор ARM. Вы ссылаетесь на специальные библиотеки, предназначенные для процессора ARM, которые также реализуют UIKit.

Это означает, что ваш код работает на полной «машинной» скорости в обеих средах. Не существует понятия «эмуляция процессора», который, по-видимому, является тем, что делает эмулятор Windows Phone 7, что-то похожее на продукт MacOS Virtual PC много лет назад (который, как я помню, купил Microsoft у Connectix)

Проблемы, о которых упоминает Роб Нейпир, вероятно, связаны с использованием собственных заголовков и библиотек в его сборке (так называемый AppKit). Есть некоторые API, которые Apple позволила использовать не в тех SDK, я помню, что были проблемы с тем, что NSTask был доступен в SDK, хотя его, например, не было на самом iPhone. Я уверен, что есть другие проблемы в этом пространстве, это не идеально (хотя это довольно круто)

В любом случае, если у Microsoft нет набора инструментов компилятора, который может быть нацелен как на ЦП телефона, так и на обычный ЦП компьютера Windows, они будут зависеть от эмуляции на уровне ЦП, а не на уровне операционной системы.

Единственное преимущество, которое имеет этот подход к эмуляции процессора, на мой взгляд, заключается в том, что вы можете взять один и тот же двоичный файл и переместить его между устройством и ПК и запустить его на обоих. Подход на симуляторе Apple требует перестройки двоичных файлов для каждой платформы. Лично, даже на моем «самом низу MacMini» время сборки настолько мало, что перестраивать его не приходится, когда я переключаю платформу.

4 голосов
/ 07 сентября 2010

Эмулятор Windows Phone на самом деле является операционной системой Windows Phone 7, скомпилированной для x86, работающей в виртуализированной среде.Он использует производную технологию от Microsoft VirtualPC / VirtualServer / Hyper-V.Таким образом, на самом деле это не эмуляция (эмуляция ARM-x86 не выполняется) и не чистая симуляция.

Типичное устройство Windows Phone 7 будет работать на процессоре ARM с частотой, близкой к 1 ГГц.Эмуляция (как в эмуляции процессора) процессора ARM требует очень мощного процессора x86.Стратегия использования визуализации позволяет ОС работать на родной скорости x86.Приложения, написанные в управляемом (.NET) коде, выполняются средой .NET на базе x86 в ОС.

Таким образом, производительность кода на типичном ПК (~ 1,5 - 3 ГГц) обычно должна превышать то, что найдено на фактическомОснованное на ARM устройство WP7.

Однако производительность GRAPHICS - это целая история.Windows Phone 7 изначально построен на стеке Direct3D.Основная ОС и вся графика вплоть до Silverlight и XNA используют Direct3D.В эмуляторе Windows Phone низкоуровневая графика D3D «передается» реализации D3D на главном ПК.Многие проблемы, которые люди видят с производительностью эмулятора Windows Phone, связаны с неэффективной работой графических адаптеров или драйверов хост-ПК.

См. Ответ на форуме для получения советов по устранению неполадок.http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/c4754ebd-f688-4c33-972a-a578b9db12ff

РЕДАКТИРОВАТЬ: Обращаясь к комментарию Джеффа ниже, утверждая "В любом случае, если у Microsoft нет набора инструментов компилятора, который может предназначаться как для ЦП телефона, так и для обычного ЦП компьютера Windows, они застряли с эмуляциейУровень процессора, а не на уровне операционной системы. "

Все приложения и игры для Windows Phone 7 основаны на .NET, поэтому не зависят от процессора.Повторяю то, что я сказал выше: Эмулятор Windows Phone 7 НЕ эмулируется на уровне процессора .Он работает на виртуальной машине с собственной скомпилированной версией x86 и запускает точно такой же «двоичный файл» приложения (файл .XAP), который будет работать на физическом устройстве.

2 голосов
/ 22 июля 2010

В бета-версии появилась проблема , затрагивающая некоторые системы пользователей, из-за которых ускорение GPU не работает в эмуляторе.Симптомы медленного рендеринга, что и следовало ожидать.Я бы посоветовал добавить сведения о вашей системе в ветку, пока рассматривается проблема, чтобы получить максимальный шанс на решение вашей системы.

2 голосов
/ 20 июля 2010

Вам нужна видеокарта DirectX 10 для получения максимальной производительности.

0 голосов
/ 16 июля 2010

Официальный документ MS на эту тему содержит причину медлительности.

«Эмулятор Windows Phone предназначен для обеспечения производительности, сопоставимой с фактическим устройством»

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

0 голосов
/ 16 июля 2010

Я думаю, что нам нужно уточнить значение этого вопроса, чтобы подобрать для него какой-либо значимый ответ.В настоящий момент мы вполне можем говорить о различных типах наблюдений за производительностью, что потенциально сводит это к более религиозным спорам.Я добавил комментарий к этому эффекту, но вы должны нажать «еще», чтобы увидеть его.

...