Verbessern Sie die Leistung des Android-Emulators unter Windows 7 x64

9

Ich verwende Eclipse Helios unter Windows 7 x64. Ich habe einen Core 2 Duo 2.0 Ghz mit 4,0 GB, was meiner Meinung nach ausreichen sollte, da ich mit anderen Entwicklungstools nie Leistungsprobleme hatte.

Als ich meine erste App auf dem Android Emulator (2.3.3 und 3.0) ausführte, dauerte das Laden des Betriebssystems mindestens 5 Minuten, und zunächst wurde nicht einmal die HelloAndroid-App ausgeführt. Selbst als ich die Anwendung ausführen konnte, war die Leistung unerträglich.

Ich habe verschiedene Dinge versucht, um die Leistung zu verbessern, aber es wird keine wesentliche Verbesserung gezeigt. Ich glaube, ich vermisse etwas.

Dinge, die ich versucht habe:

Auf AVD Manager

  1. RAM-Größe des Geräts auf 512.
  2. Auflösung auf 640 x 480.
  3. Schnappschuss aktiviert.

Auf Projekteinstellungen \ Android

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

Dinge, die ich nicht ausprobieren kann: - Bereitstellung auf einem Gerät (keine).

Übrigens hatte ich das gleiche Problem bei einem MAC Mini mit 2,66 GHz und 2 GB, aber diese Einstellungen machten den Unterschied.

Jeder kann Tipps geben, um diese lahme Leistung zu verbessern?.

Mikywan
quelle
Holen Sie sich einen Quad-Core mit Hyperthreading bei 2,8 GHz und einer verrückten Grafikkarte. Heh. Aber im Ernst, der Emulator ist langsam. Im Allgemeinen ist die Emulation immer langsam, es sei denn, Ihre Hardware ist um eine Größenordnung leistungsfähiger. Ich glaube nicht, dass Sie es viel besser zum Laufen bringen werden, als Sie es bereits getan haben.
Matthew Read
6
Tatsächlich unterstützt der Emulator (noch) nicht mehrere Kerne. Die Taktrate ist also wirklich wichtig. Selbst auf meiner neuen Entwicklungsmaschine habe ich Leistungsprobleme, insbesondere mit Waben. Ich spreche von dem neuesten i7 Quad Core, 8 GB Speicher und einer Solid State Festplatte.
Bryan Denny
Ha, also sollte mein alter 3,0-GHz-Pentium 4 besser laufen (mit nichts anderem im Hintergrund)? Verrückt.
Matthew Read
@Bryan Denny Auch wenn der Emulator kein Multithread-System verwendet, hilft die Verwendung mehrerer Kerne dabei, die Arbeitslast auf weniger verwendete Kerne zu verlagern. Dies verringert jedoch die Stabilität und führt zu regelmäßigen Abstürzen. Es ist also ein Kompromiss zwischen Geschwindigkeit und Stabilität, aber ich bevorzuge es, alle Kerne für die Geschwindigkeit zu verwenden.
Onik

Antworten:

6

Der Emulator ist langsam, da es sich um ein QEMU handelt, das eine ganz andere CPU-Architektur emuliert, als sie von Consumer-PCs verwendet wird: ARM (vs. x86 (_64) auf Ihrem PC)

Dies bedeutet, dass jeder CPU-Befehl auf der ARM-CPU des Emulators emuliert werden muss, was per se langsam ist . Auch der Emulator ist AFAIK Single-Threaded. Dies bedeutet, dass eine Beschleunigung nur durch schnelle CPU-Kerne erreicht werden kann - Multi-Cores helfen hier nicht - und eine angemessene Menge an RAM.

Fließen
quelle
Das Emulieren einer CPU ist in der Regel langsam, aber der Telefonemulator emuliert auch ARM und ist viel schneller. Es ist mehr als nur die Befehlssätze. Honeycomb scheint viel komplexer zu sein (und erfordert wahrscheinlich einen leistungsstärkeren ARM-Prozessor). GoogleTV ist x86, daher frage ich mich, wie die Emulatorleistung aussehen wird ... (Ob sie x86 emulieren oder als nativen Prozess
ausführen
3

Sie könnten versuchen, einen Emulator eines Drittanbieters zu verwenden, der meiner Erfahrung nach sehr gut funktioniert. Ich werde Ihnen nicht sagen, dass es nicht von Zeit zu Zeit verzögert, aber nehmen Sie die Testversion und Sie werden sehen, wie viel besser dieser Emulator läuft.

Es ist keine kostenlose Anwendung, aber auch nicht teuer. Sie finden es bei YouWave Android Emulator . Probieren Sie die Testversion aus und melden Sie sich bei uns;)

Hallaghan
quelle
0

Honeycomb (3.0) ist im Emulator notorisch langsam. Sie könnten versuchen, den größten Teil Ihrer Funktionen zuerst für das Telefon zum Laufen zu bringen, um die Verwendung von Honeycomb zu minimieren.

Es gibt einige BIOS-Einstellungen, um die Virtualisierungsunterstützung in Ihrer CPU zu aktivieren. Ich denke, das Einschalten kann den Emulator beschleunigen, bin mir aber nicht sicher. (Die genauen Namen für Ihr System sind mir nicht bekannt, aber sie haben "Virtualisierung" oder "vt-x" oder etwas im Namen.

Sie können auch versuchen, dem Emulator einen Prozessor zuzuweisen. Sie können die "Prozessoraffinität" für Prozesse in Windows mithilfe des Task-Managers ändern . Wenn Sie es so ändern, dass Ihr Emulator einen Prozessor bevorzugt und Ihre anderen Hauptaufgaben (wie Eclipse) diesen Prozessor vermeiden, sehen Sie möglicherweise einige Vorteile. Wenn Ihr Prozessor über Hyperthread verfügt, stellen Sie sicher, dass Sie die beiden virtuellen Kerne als einen Kern behandeln, und weisen Sie dem Emulator zu, beide virtuellen Kerne zu bevorzugen.

(Das Auffinden der Prozesse ist mit ProcessExplorer möglicherweise einfacher, da Sie auf die Zielschaltfläche und dann auf ein Fenster klicken können und der Prozess für dieses Fenster angezeigt wird .)


Update: Siehe die Verwendung von Hardwarebeschleunigung Abschnitt auf der Android - Dokumentation zu sehen , wie Ihre GPU nutzen und Virtualisierungsunterstützung in Ihrer CPU den Emulator zu beschleunigen.

idbrii
quelle
Erweiterte CPU-Befehlssätze beschleunigen den Emulator nicht, da im Grunde genommen qemu eine ARM-CPU emuliert.
Flow
Es sei denn, sie helfen qemu dabei, die ARM-Anweisungen schneller zu verarbeiten. (Damit es mit der Rate des ARM übereinstimmt.) Beachten Sie, dass Honeycomb auf dem Emulator langsamer läuft als auf einem realen Gerät. Angenommen, ARM hatte SIMD-Anweisungen, x86 jedoch nicht und emulierte sie stattdessen als serielle Operationen. Das Aktivieren einer SIMD-CPU-Erweiterung auf x86 würde dieses Problem lösen. Trotzdem weiß ich nicht, was die Virtualisierungsunterstützung bewirkt, außer dass sie die Leistung bei der Simulation von CPUs verbessern soll.
idbrii
Virtualisierung und Emulation sind nicht dasselbe.
Lie Ryan
@Lie: Stimmt, aber das ist nicht der Punkt: Die Virtualisierungsunterstützung von Intel / AMD macht den Android-Emulator (theoretisch) schneller. Jemand ist wahrscheinlich mit seiner Benennung ungenau. (Ich würde vermuten, dass die CPU-Unterstützung sowohl für die Virtualisierung als auch für die CPU-Emulation funktioniert, sodass die CPU-Anbieter nicht wirklich daneben liegen.) Nur weil sie nicht gleich sind, heißt das nicht, dass sie nicht kombiniert werden können Ein System: "QEMU ist ein generischer und Open-Source-Maschinenemulator und Virtualizer" .
idbrii