Améliorez les performances de l'émulateur Android sur Windows 7 x64

9

J'exécute Eclipse Helios sur Windows 7 x64. J'ai un Core 2 Duo 2.0 Ghz avec 4.0 Go qui devrait être suffisant, car je n'ai jamais eu de problèmes de performances avec d'autres outils de développement.

Lorsque j'ai exécuté ma première application sur l'émulateur Android (2.3.3 et 3.0), il a fallu au moins 5 minutes pour charger le système d'exploitation et au début, il n'a même pas exécuté l'application HelloAndroid. Même lorsque j'ai réussi à exécuter l'application, les performances étaient insupportables.

J'ai essayé différentes choses pour améliorer les performances, mais aucune amélioration majeure n'est indiquée. Je pense que je manque quelque chose.

Ce que j'ai essayé:

Sur AVD Manager

  1. Taille de la mémoire RAM de l'appareil à 512.
  2. Résolution à 640 x 480.
  3. Instantané activé.

Sur les préférences du projet \ Android

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

Choses que je ne peux pas essayer: - Déploiement sur un appareil (n'en ai pas).

Soit dit en passant, j'ai eu le même problème sur un MAC Mini 2,66 GHz 2 Go, mais ces paramètres ont fait la différence.

Tout le monde peut donner des conseils pour améliorer ces performances boiteuses?.

mikywan
la source
Obtenez un quad-core avec hyperthreading @ 2,8 GHz et une carte vidéo insensée. Il h. Mais sérieusement, l'émulateur est lent. D'une manière générale, l'émulation est toujours lente à moins que votre matériel ne soit plus puissant d'un ordre de grandeur. Je ne pense pas que vous allez le faire fonctionner beaucoup mieux que vous ne l'avez déjà fait.
Matthew Read
6
En fait, l'émulateur ne prend pas encore en charge plusieurs cœurs. La vitesse d'horloge est donc vraiment importante. Même sur ma nouvelle machine de développement, j'ai des problèmes de performances, en particulier avec le nid d'abeille. Je parle du dernier quadricœur i7, d'une mémoire de 8 Go et d'un disque dur à semi-conducteurs.
Bryan Denny
Ha, donc mon ancien Pentium 4 à 3,0 GHz devrait mieux fonctionner (avec rien d'autre de majeur en arrière-plan)? Fou.
Matthew Read
@Bryan Denny Même si l'émulateur n'est pas multithread, le fait de lui donner plusieurs cœurs permet de déplacer la charge de travail vers des cœurs moins utilisés, mais cela diminue la stabilité, entraînant des plantages périodiques. C'est donc un compromis vitesse / stabilité, mais je préfère utiliser tous les cœurs pour la vitesse.
onik

Réponses:

6

L'émulateur est lent car c'est un qemu qui émule une architecture CPU complètement différente telle qu'elle est utilisée par les PC grand public: ARM (vs x86 (_64) sur votre PC)

Cela signifie que chaque instruction CPU sur le processeur ARM de l'émulateur doit être émulée, ce qui est en soi lent . L'émulateur est également un thread unique AFAIK. Cela signifie que l'accélération ne peut être obtenue que par des cœurs de processeurs rapides - les multicœurs ne seront pas utiles ici - et une quantité raisonnable de RAM.

Couler
la source
Émuler un CPU a tendance à être lent, mais l'émulateur de téléphone émule également ARM et c'est beaucoup plus rapide. C'est plus que les jeux d'instructions. Honeycomb semble être beaucoup plus complexe (et nécessite probablement un processeur ARM plus puissant). GoogleTV est x86, donc je me demande à quoi ressembleront les performances de son émulateur ... (Qu'ils émulent x86 ou l'exécutent en tant que processus natif.)
idbrii
3

Vous pouvez essayer d'utiliser un émulateur tiers qui, d'après mon expérience, fonctionne très bien. Je ne vais pas vous dire qu'il ne sera pas retardé de temps en temps, mais faites l'essai et vous verrez à quel point cet émulateur fonctionne mieux.

Ce n'est pas une application gratuite, mais ce n'est pas cher non plus. Vous pouvez le trouver sur l' émulateur Android YouWave . Essayez le procès et revenez vers nous;)

Hallaghan
la source
0

Honeycomb (3.0) est notoirement lent dans l'émulateur. Vous pouvez essayer de faire fonctionner la plupart de vos fonctionnalités pour le téléphone en premier, afin de minimiser l'utilisation de Honeycomb.

Il existe certains paramètres du BIOS pour activer la prise en charge de la virtualisation dans votre CPU. Je pense que l'activation de ces derniers peut accélérer l'émulateur, mais je ne suis pas sûr. (Je ne connais pas les noms exacts de votre système, mais ils auront "virtualisation" ou "vt-x" ou quelque chose dans le nom.

Vous pouvez également essayer de dédier un processeur à l'émulateur. Vous pouvez modifier «l'affinité du processeur» pour les processus dans Windows à l'aide du gestionnaire de tâches. Si vous le changez pour que votre émulateur préfère un processeur et que vos autres tâches principales (comme l'éclipse) évitent ce processeur, vous pouvez voir des gains. Si votre processeur est hyperthreadé, assurez-vous de traiter les deux cœurs virtuels comme un seul cœur et d'affecter l'émulateur à préférer les deux cœurs virtuels.

(La recherche des processus peut être plus facile avec ProcessExplorer car vous pouvez cliquer sur le bouton cible puis sur une fenêtre et il vous montre le processus pour cette fenêtre.)


Mise à jour: consultez la section Utilisation de l'accélération matérielle sur les documents Android pour voir comment utiliser votre prise en charge de GPU et de virtualisation dans votre CPU pour accélérer l'émulateur.

idbrii
la source
Les jeux d'instructions du processeur améliorés n'aideront pas à accélérer l'émulateur, car c'est essentiellement qemu qui émule un processeur ARM.
Flow
À moins qu'ils ne permettent à qemu de traiter les instructions ARM à un rythme plus rapide. (Il peut donc correspondre au taux de l'ARM.) Gardez à l'esprit que Honeycomb s'exécute plus lentement sur l'émulateur que sur un véritable appareil. Supposons que ARM ait des instructions SIMD, mais pas x86 et les émule plutôt comme des opérations en série. L'activation d'une extension CPU SIMD sur x86 résoudrait ce problème. Cela dit, je ne sais pas ce que le support de virtualisation fait, sauf qu'il est destiné à améliorer les performances lors de la simulation de CPU.
idbrii
La virtualisation et l'émulation ne sont pas identiques.
Lie Ryan
@Lie: C'est vrai, mais ce n'est pas la question: le support de virtualisation d'Intel / AMD (théoriquement) rend l'émulateur Android plus rapide. Quelqu'un est probablement imprécis avec son nom. (Je suppose que la prise en charge du processeur fonctionne à la fois pour la virtualisation et l'émulation du processeur, de sorte que les fournisseurs de CPU ne sont pas vraiment hors de propos.) Heck, ce n'est pas parce qu'ils ne sont pas les mêmes qu'ils ne peuvent pas être combinés dans un système: "QEMU est un émulateur et virtualiseur de machine générique et open source" .
idbrii