Экземпляр эмулятора Gingerbread гораздо медленнее, чем Froyo и ниже. Почему?

Я не уверен, заметил ли это кто-нибудь еще, но эмулятор Gingerbread работает как собака, с прокруткой, навигацией, взаимодействием — все это занимает гораздо больше времени и гораздо более изменчиво. Я даже получил ANR в браузере, когда попытался его использовать: http://www.androidpolice.com/2010/12/06/walkthrough-and-hands-on-with-the-gingerbread-ui-the-new-gingerbread-keyboard-in-all-its-sexiness/ (см. внизу).

Я только что прочитал о новом StrictMode по адресу http://android-developers.blogspot.com/2010/12/new-gingerbread-api-strictmode.html и обо всех улучшениях производительности в Gbread, но пока мой опыт говорит об обратном.

Можем ли мы добраться до сути этого? Я ловлю себя на том, что боюсь поднимать пример Gingerbread в этот момент.


person Artem Russakovskii    schedule 13.12.2010    source источник


Ответы (6)


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

С введением Honeycomb система Android использует больше графической мощности для рендеринга пользовательского интерфейса. Это при запуске на симуляторе не может изначально использовать графическую мощность аппаратного обеспечения вашего ПК, но в большинстве случаев эмулирует аппаратное обеспечение на телефоне, что всегда приводит к потере производительности. Стали доступны более общие эмуляторы X86, такие как VMWare, но это может занять некоторое время, прежде чем они станут доступны для Android SDK. Пока не будет доступен порт Android Honeycomb для X86, который может использовать преимущества вашего собственного графического процессора, эмулятор будет медленным.

Единственным реальным решением является покупка устройства Honeycomb для разработки.

person ddcruver    schedule 03.05.2011
comment
И, вероятно, обнаружите, что вам нужно рутировать его, чтобы упростить выполнение действий, которые делают разработчики, что приводит к аннулированию гарантии. - person Alan B; 04.07.2011
comment
Я бы рекомендовал не покупать какие-либо устройства Samsung для разработки, если у них нет Vanilla Android, они не будут продолжать поддержку устройства. - person Doug Molineux; 01.11.2011

Когда вы создаете новый AVD GingerBread (уровень API 9), дайте ему реалистичный объем оперативной памяти.

Например, Nexus S имеет 512 МБ.

Вы делаете это в диалоговом окне «Создать новое виртуальное устройство Android (AVD)».

Нажмите «Создать...», чтобы добавить новый аппаратный параметр, и выберите «Размер оперативной памяти устройства», нажмите «ОК».

Измените количество по умолчанию с 96 до 512.

person byeo    schedule 03.01.2011
comment
Как уже отмечалось в обсуждении Брэда Фицпатрика, эта настройка не имела значения. - person Artem Russakovskii; 03.01.2011
comment
Если вы внимательно прочитаете, Брэд обсуждает максимальный размер кучи приложения VM. Я говорю о размере оперативной памяти устройства, который является совсем другим свойством. Это сработало для меня. В противном случае 96 МБ по умолчанию недостаточно для запуска фоновых задач. - person byeo; 03.01.2011
comment
Для меня тоже не было никакой разницы, может быть, моему компьютеру нужно больше оперативной памяти, я думал, что 4 ГБ будет достаточно .. - person Doug Molineux; 01.11.2011
comment
Общий объем ОЗУ имел бы значение только в том случае, если бы он действительно заканчивался, а Android начал убивать фоновые задачи, а затем перезапускать их. Производительность эмулятора медленная из коробки - память здесь ни при чем. - person Artem Russakovskii; 01.11.2011

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

person Brad Fitzpatrick    schedule 13.12.2010
comment
Что вы имеете в виду под дать больше памяти? - person Randy Sugianto 'Yuku'; 13.12.2010
comment
@yuku, когда вы создаете AVD, вы можете назначить ему объем оперативной памяти - person bigstones; 13.12.2010
comment
Вы имеете в виду параметр максимального размера кучи приложения VM при создании AVD? Если да, то каким он должен быть? - person Artem Russakovskii; 14.12.2010
comment
Я вижу, что параметр по умолчанию равен 24, поэтому я установил его на 128. Никакой разницы не увидел - производительность по-прежнему низкая. Я настраиваю неправильное значение? - person Artem Russakovskii; 14.12.2010
comment
@Artem это размер оперативной памяти устройства. - person Josh Lee; 14.12.2010
comment
А, нашел. Только что попробовал - разницы тоже не заметил. Все еще намного медленнее и изменчивее, чем 2.2 - person Artem Russakovskii; 15.12.2010
comment
ПОДТВЕРЖДЕНИЕ. Это немного помогло, но все еще мучительно медленно. - person Thilo-Alexander Ginkel; 20.12.2010

Теперь, когда вы можете легко редактировать AVD, я попытался поиграть с некоторыми настройками для своего Gingerbread AVD, и, наконец, его можно использовать.

  • SD-карта: 500 МБ
  • Кожа: WVGA800
  • Абстрактная плотность ЖК-дисплея: 240
  • Размер раздела кеша: 128 МБ
  • Максимальный размер кучи приложения ВМ: 48
  • Размер оперативной памяти устройства: 512

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

person Ian G. Clifton    schedule 28.01.2011
comment
Пробовал именно эти настройки - никакой видимой разницы для меня. - person Artem Russakovskii; 28.01.2011
comment
Изменение размера кучи приложения MAX VM на 500 не совсем уместно. Это означает, что каждое приложение может использовать до 500 МБ данных. До недавнего времени виртуальная машина Delvic могла поддерживать только что-то менее 48 МБ. Насколько я знаю, устройство с наибольшим бюджетом виртуальных машин — это Xoom, и я думаю, что у него 48 МБ. Также одно приложение не должно использовать все ресурсы Android-устройства. Также помните, что есть и другие приложения. Я знаю, что приложению Android Services требуется около 50 МБ, а другим аппаратным средствам/процессам требуется часть этой оперативной памяти. - person ddcruver; 02.03.2011
comment
@ddcruver спасибо за улов; это была опечатка, которая должна была быть 50, но 48 имеет смысл, если это то, что использует Xoom. Я обновлю свой ответ. - person Ian G. Clifton; 04.03.2011

Мои предложения:

Подключайте SD-карту только в том случае, если она вам нужна, и, скорее всего, не выделяйте больше, чем вам нужно. Это надо как-то подражать.

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

По общему признанию, значений по умолчанию недостаточно для определенных приложений, и объем оперативной памяти устройства должен быть не менее 258 до пределов вашего целевого устройства Android. Также помните, что если на вашем хост-компьютере разработки мало памяти, то память, выделенную для вашего эмулятора, придется поменять местами, а предоставление меньшего объема позволит избежать ненужных обращений к странице.

person ddcruver    schedule 01.03.2011

После изменения разрешения экрана, тарана устройства, дав устройству «прогреться» и работая на свежем новом оборудовании, я зафиксировал скорость эмулятора Honeycomb.

Результат: http://www.youtube.com/watch?v=-7OR8vPsIak

Я нахожу, что это не сильно отличается от Gingerbread на старом оборудовании. Я надеюсь, что GL, ускоренный на хосте, скоро появится в SDK. На данный момент простая разработка возможна, но создание UX или демонстрация невозможны.

person Rene    schedule 24.04.2011