Повышение производительности эмулятора Android в Windows 7 x64

9

Я использую Eclipse Helios на Windows 7 x64. У меня есть Core 2 Duo 2,0 ГГц с 4,0 ГБ, которого, на мой взгляд, должно хватить, поскольку у меня никогда не возникало проблем с производительностью других инструментов разработки.

Когда я запускал свое первое приложение на эмуляторе Android (2.3.3 и 3.0), загрузка операционной системы заняла не менее 5 минут, и сначала даже не запускалось приложение HelloAndroid. Даже когда мне удалось запустить приложение, производительность была невыносимой.

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

Вещи, которые я пробовал:

На AVD Manager

  1. Объем оперативной памяти устройства до 512.
  2. Разрешение до 640 х 480.
  3. Снимок включен.

О настройках проекта \ Android

  1. \ Launch \ -cpu-delay 0 -no-boot-anim -cache ./cache -avd Android3

Вещи, которые я не могу попробовать: - Развертывание на устройстве (не имеет).

Кстати, у меня была такая же проблема на MAC Mini 2,66 ГГц 2 ГБ, но эти настройки имели значение.

Кто-нибудь может дать какие-либо советы, чтобы улучшить эту плохую работу?

mikywan
источник
Получите четырехъядерный процессор с гиперпоточностью @ 2,8 ГГц и безумной видеокартой. Хех. А если серьезно, эмулятор работает медленно. Вообще говоря, эмуляция всегда медленная, если ваше оборудование не на порядок мощнее. Я не думаю, что вы добьетесь того, чтобы это работало намного лучше, чем у вас уже есть.
Мэтью Прочитал
6
На самом деле, эмулятор не поддерживает несколько ядер (пока). Так что часовая скорость действительно имеет значение. Даже на моей новой машине разработчика у меня проблемы с производительностью, особенно с сотовой структурой. Я говорю о последнем четырехъядерном процессоре i7, 8 ГБ памяти и твердотельном жестком диске.
Брайан Денни
Ха, так что мой старый Pentium 4 с тактовой частотой 3,0 ГГц должен работать лучше (без фонового изображения)? Сумасшедший.
Мэтью Прочитал
@Bryan Denny Несмотря на то, что эмулятор не поддерживает многопоточность, выделение нескольких ядер помогает перенести рабочую нагрузку на менее используемые ядра, но это снижает стабильность, что приводит к периодическим сбоям. Так что это компромисс между скоростью и стабильностью, но я предпочитаю использовать все ядра для скорости.
onik

Ответы:

6

Эмулятор работает медленно, потому что это qemu, который эмулирует совершенно другую архитектуру ЦП, поскольку он используется на потребительских ПК: ARM (против x86 (_64) на вашем ПК)

Это означает, что каждая инструкция ЦП на процессоре ARM эмулятора должна быть эмулирована, что само по себе медленно . Также эмулятор AFAIK однопоточный. Это означает, что ускорение может быть достигнуто только за счет быстрых ядер ЦП - многоядерные здесь не помогут - и разумного объема ОЗУ.

поток
источник
Эмуляция процессора имеет тенденцию быть медленной, но эмулятор телефона также эмулирует ARM, и это намного быстрее. Это больше, чем просто наборы инструкций. Соты, кажется, намного сложнее (и, вероятно, требуют более мощный процессор ARM). GoogleTV - это x86, поэтому мне интересно, какова будет его производительность эмулятора ... (Будь то эмуляция x86 или запуск его как собственный процесс.)
idbrii
3

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

Это не бесплатное приложение, но и не дорогое. Вы можете найти его в эмуляторе Android YouWave . Дайте пробную версию и вернитесь к нам;)

Hallaghan
источник
0

Honeycomb (3.0) очень медленно работает в эмуляторе. Вы могли бы сначала попытаться заставить большинство своих функций работать на телефоне, чтобы свести к минимуму использование Honeycomb.

Существуют некоторые настройки BIOS для включения поддержки виртуализации в вашем процессоре. Я думаю, что включение их может ускорить эмулятор, но я не уверен. (Точных названий вашей системы я не знаю, но в названии у них будет слово «виртуализация» или «vt-x» или что-то в этом роде).

Вы также можете попробовать выделить процессор для эмулятора. Вы можете изменить «привязку к процессору » для процессов в Windows, используя диспетчер задач. Если вы измените его так, чтобы ваш эмулятор предпочитал один процессор, а другие основные задачи (например, eclipse) избегали этого процессора, вы можете увидеть некоторые преимущества. Если ваш процессор является многопоточным, убедитесь, что вы рассматриваете два виртуальных ядра как одно ядро ​​и назначаете эмулятору предпочтение для обоих виртуальных ядер.

(Поиск процессов может быть проще с ProcessExplorer, потому что вы можете нажать целевую кнопку и затем щелкнуть окно, и он покажет вам процесс для этого окна.)


Обновление. См. Раздел « Использование аппаратного ускорения» в документации по Android, чтобы узнать, как использовать поддержку графического процессора и виртуализации в процессоре для ускорения эмулятора.

idbrii
источник
Усовершенствованные наборы команд процессора не помогут ускорить эмулятор, потому что в основном это qemu, который эмулирует процессор ARM.
Поток
Если только они не помогут qemu обрабатывать инструкции ARM с большей скоростью. (Таким образом, он может соответствовать скорости ARM.) Имейте в виду, что Honeycomb работает на эмуляторе медленнее, чем на реальном устройстве. Скажем, у ARM были инструкции SIMD, а у x86 их нет, и вместо этого они эмулировали их как последовательные операции. Включение расширения процессора SIMD на x86 решит эту проблему. Тем не менее, я не знаю, что делает поддержка виртуализации, за исключением того, что она предназначена для повышения производительности при моделировании процессоров.
idbrii
Виртуализация и эмуляция не одно и то же.
Ли Райан
@Lie: Да, но это не относится к делу: поддержка виртуализации Intel / AMD (теоретически) делает эмулятор Android быстрее. Кто-то, вероятно, неточный с их именами. (Я предполагаю, что поддержка ЦП работает как для виртуализации, так и для эмуляции ЦП, поэтому производители ЦП на самом деле не так уж и плохи.) Черт, просто потому, что они не одинаковы, не означает, что их нельзя объединить одна система: «QEMU - это универсальный эмулятор и виртуализатор машин с открытым исходным кодом» .
idbrii