Migliora le prestazioni dell'emulatore Android su Windows 7 x64


9

Sto eseguendo Eclipse Helios su Windows 7 x64. Ho un Core 2 Duo 2.0 Ghz con 4.0 GB che penso dovrebbe essere abbastanza, dal momento che non ho mai avuto problemi di prestazioni con altri strumenti di sviluppo.

Quando eseguo la mia prima app sull'emulatore Android (sia 2.3.3 che 3.0) ci sono voluti almeno 5 minuti per caricare il sistema operativo e all'inizio non ha nemmeno eseguito l'app HelloAndroid. Anche quando sono riuscito a eseguire l'applicazione, le prestazioni sono state insopportabili.

Ho provato varie cose per migliorare le prestazioni, ma non viene mostrato alcun miglioramento importante. Penso che mi manchi qualcosa.

Cose che ho provato:

Su AVD Manager

  1. Dimensione della RAM del dispositivo a 512.
  2. Risoluzione a 640 x 480.
  3. Istantanea abilitata.

Su Preferenze progetto \ Android

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

Cose che non posso provare: - Distribuzione su un dispositivo (non ne ho).

A proposito, ho avuto lo stesso problema su un MAC Mini 2,66 GHz 2 GB, ma queste impostazioni hanno fatto la differenza.

Chiunque può dare qualche consiglio per migliorare questa prestazione zoppa ?.


Ottieni un quad-core con hyperthreading a 2,8 GHz e una scheda video folle. Eh. Ma sul serio, l'emulatore è lento. In generale, l'emulazione è sempre lenta a meno che l'hardware non sia un ordine di grandezza più potente. Non credo che riuscirai a farlo funzionare molto meglio di quello che hai già.
Matteo Leggi il

6
In realtà, l'emulatore non supporta più core (ancora). Quindi la velocità dell'orologio conta davvero. Anche sulla mia nuova macchina di sviluppo, ho problemi di prestazioni, soprattutto con nido d'ape. Sto parlando dell'ultimo quad core i7, memoria da 8 GB e un disco rigido a stato solido.
Bryan Denny

Ah, quindi il mio vecchio Pentium 4 a 3.0 GHz dovrebbe funzionare meglio (con nient'altro di grave in background)? Pazzo.
Matteo Leggi il

@Bryan Denny Anche se l'emulatore non è multithread, assegnarlo a più core aiuta a spostare il carico di lavoro su core meno utilizzati, ma ciò diminuisce la stabilità, causando arresti periodici. Quindi è un compromesso di velocità / stabilità, ma preferisco usare tutti i core per la velocità.
onik,

Risposte:


6

L'emulatore è lento perché è un qemu che emula un'architettura CPU completamente diversa rispetto a quella utilizzata dai PC consumer: ARM (vs. x86 (_64) sul tuo PC)

Ciò significa che ogni istruzione CPU sulla CPU ARM dell'emulatore deve essere emulata, che è di per sé lenta . Anche l'emulatore è AFAIK a thread singolo. Ciò significa che l'accelerazione può essere raggiunta solo da core CPU veloci - i multi-core non aiuteranno qui - e una quantità ragionevole di RAM.


L'emulazione di una CPU tende ad essere lenta, ma l'emulatore del telefono emula anche ARM ed è molto più veloce. È più di un semplice set di istruzioni. Il nido d'ape sembra essere molto più complesso (e probabilmente richiede un processore ARM più potente). GoogleTV è x86, quindi mi chiedo come saranno le prestazioni dell'emulatore ... (Sia che emulino x86 o lo eseguano come processo nativo.)
idbrii,

3

Potresti provare a utilizzare un emulatore di terze parti che, per esperienza, funziona molto bene. Non ti dirò che non subirà ritardi di tanto in tanto, ma fai la prova e vedrai quanto funziona meglio questo emulatore.

Non è un'applicazione gratuita, ma non è nemmeno costosa. Puoi trovarlo su YouWave Android Emulator . Prova la versione di prova e torna da noi;)


0

Honeycomb (3.0) è notoriamente lento nell'emulatore. Puoi provare a far funzionare la maggior parte delle tue funzionalità per il telefono, per ridurre al minimo l'utilizzo di Honeycomb.

Esistono alcune impostazioni del BIOS per abilitare il supporto di virtualizzazione nella CPU. Penso che accenderli potrebbe accelerare l'emulatore, ma non sono sicuro. (I nomi esatti per il tuo sistema non lo so, ma avranno "virtualizzazione" o "vt-x" o qualcosa nel nome.

Potresti anche provare a dedicare un processore all'emulatore. È possibile modificare l '"affinità del processore" per i processi in Windows utilizzando Task Manager. Se lo cambi in modo che l'emulatore preferisca un processore e le altre tue attività principali (come l'eclissi) evitino quel processore, potresti vedere dei guadagni. Se il tuo processore è hyperthreaded, assicurati di trattare i due core virtuali come un core e assegnare l'emulatore per preferire entrambi i core virtuali.

(Trovare i processi potrebbe essere più semplice con ProcessExplorer perché puoi fare clic sul pulsante di destinazione e quindi fare clic su una finestra e ti mostra il processo per quella finestra.)


Aggiornamento: vedere la sezione Uso dell'accelerazione hardware nei documenti Android per vedere come utilizzare la GPU e il supporto di virtualizzazione nella CPU per accelerare l'emulatore.


I set di istruzioni della CPU potenziati non aiuteranno ad accelerare l'emulatore, perché è fondamentalmente qemu che emula una CPU ARM.
Flusso

A meno che non aiutino qemu a elaborare le istruzioni ARM a una velocità maggiore. (Quindi può corrispondere alla frequenza del ARM.) Tieni presente che Honeycomb funziona più lentamente sull'emulatore che su un dispositivo reale. Supponiamo che ARM avesse istruzioni SIMD, ma x86 no e invece le ha emulate come operazioni seriali. Abilitare un'estensione della CPU SIMD su x86 risolverebbe questo problema. Detto questo, non so che cosa fa il supporto di virtualizzazione, tranne per il fatto che è destinato a migliorare le prestazioni durante la simulazione di CPU.
idbrii,

La virtualizzazione e l'emulazione non sono uguali.
Lie Ryan

@Lie: Vero, ma non è questo il punto: il supporto di virtualizzazione Intel / AMD (teoricamente) rende l'emulatore Android più veloce. Qualcuno è probabilmente impreciso con il loro nome. (Immagino che il supporto CPU funzioni sia per la virtualizzazione che per l'emulazione della CPU, quindi i fornitori di CPU non sono realmente fuori dal comune.) Cavolo, solo perché non sono gli stessi non significa che non possono essere combinati in un sistema: "QEMU è un emulatore e virtualizzatore di macchine generico e open source" .
idbrii,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.