Popraw wydajność emulatora Androida w systemie Windows 7 x64

9

Używam Eclipse Helios na Windows 7 x64. Mam Core 2 Duo 2.0 Ghz z 4,0 GB, które moim zdaniem powinny wystarczyć, ponieważ nigdy nie miałem problemów z wydajnością w przypadku innych narzędzi programistycznych.

Kiedy uruchamiam pierwszą aplikację na emulatorze Androida (zarówno 2.3.3, jak i 3.0), ładowanie systemu operacyjnego zajęło co najmniej 5 minut, a na początku nawet nie uruchomiła aplikacji HelloAndroid. Nawet gdy udało mi się uruchomić aplikację, wydajność była nie do zniesienia.

Próbowałem różnych rzeczy, aby poprawić wydajność, ale żadna poważna poprawa nie jest widoczna. Chyba coś mi umknęło.

Rzeczy, których próbowałem:

W AVD Manager

  1. Rozmiar pamięci RAM urządzenia do 512.
  2. Rozdzielczość do 640 x 480.
  3. Migawka włączona.

W Preferencjach projektu \ Android

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

Czego nie mogłem próbować: - Wdrażanie na urządzeniu (nie mam żadnego).

Nawiasem mówiąc, miałem ten sam problem na MAC Mini 2.66 GHz 2 GB, ale te ustawienia zrobiły różnicę.

Każdy może dać jakieś wskazówki, jak poprawić tę kiepską wydajność ?.

mikywan
źródło
Zdobądź czterordzeniowy procesor z hyperthreadingiem 2,8 GHz i szaloną kartą wideo. Heh Ale poważnie, emulator jest wolny. Mówiąc ogólnie, emulacja jest zawsze powolna, chyba że sprzęt jest o rząd wielkości potężniejszy. Nie sądzę, żebyś działał o wiele lepiej niż już masz.
Mateusz
6
W rzeczywistości emulator nie obsługuje jeszcze wielu rdzeni. Tak więc prędkość zegara ma znaczenie. Nawet na moim nowym urządzeniu deweloperskim mam problemy z wydajnością, szczególnie w przypadku plastra miodu. Mówię o najnowszym czterordzeniowym procesorze i7, pamięci 8 GB i dysku SSD.
Bryan Denny
Ha, więc mój stary Pentium 4 3,0 GHz powinien działać lepiej (bez większych zmian w tle)? Zwariowany.
Mateusz
@Bryan Denny Mimo że emulator nie jest wielowątkowy, nadanie mu wielu rdzeni pomaga przesunąć obciążenie na rzadziej używane rdzenie, ale zmniejsza to stabilność, powodując okresowe awarie. Jest to więc kompromis prędkości / stabilności, ale wolę używać wszystkich rdzeni do prędkości.
onik

Odpowiedzi:

6

Emulator działa wolno, ponieważ jest qemu, który emuluje zupełnie inną architekturę procesora, ponieważ jest używany przez komputery osobiste: ARM (vs. x86 (_64) na twoim komputerze)

Oznacza to, że każda instrukcja procesora na procesorze ARM emulatora musi być emulowana, co samo w sobie jest powolne . Ponadto emulator jest jednowątkowy AFAIK. Oznacza to, że przyspieszenie może być osiągnięte tylko dzięki szybkim rdzeniom procesorów - wiele rdzeni tu nie pomoże - i rozsądnej ilości pamięci RAM.

Pływ
źródło
Emulacja procesora jest zwykle powolna, ale emulator telefonu emuluje również ARM i jest znacznie szybszy. To coś więcej niż zestawy instrukcji. Plaster miodu wydaje się być znacznie bardziej złożony (i prawdopodobnie wymaga mocniejszego procesora ARM). GoogleTV to x86, więc zastanawiam się, jak będzie wyglądać jego emulator ... (Niezależnie od tego, czy emulują x86, czy uruchamiają go jako proces natywny.)
idbrii 28.11.11
3

Możesz spróbować użyć emulatora innej firmy, który z mojego doświadczenia działa bardzo dobrze. Nie powiem ci, że od czasu do czasu nie będzie opóźniał, ale weź próbę, a zobaczysz, o ile lepiej działa ten emulator.

To nie jest darmowa aplikacja, ale też nie jest droga. Możesz go znaleźć na YouWave Android Emulator . Spróbuj i wróć do nas;)

Hallaghan
źródło
0

Plaster miodu (3.0) jest bardzo powolny w emulatorze. Możesz najpierw spróbować uruchomić większość funkcji telefonu, aby zminimalizować korzystanie z plastra miodu.

Istnieją pewne ustawienia BIOS-u umożliwiające obsługę wirtualizacji w twoim CPU. Myślę, że włączenie ich może przyspieszyć emulator, ale nie jestem pewien. (Dokładne nazwy twojego systemu nie wiem, ale będą miały „wirtualizację”, „vt-x” lub coś w nazwie.

Możesz także spróbować poświęcić procesor emulatorowi. Możesz zmienić „koligację procesora” dla procesów w systemie Windows za pomocą menedżera zadań. Jeśli zmienisz go tak, aby Twój emulator preferował jeden procesor, a inne główne zadania (takie jak zaćmienie) unikną tego procesora, możesz zauważyć pewne korzyści. Jeśli procesor jest poddany procesowi wielowątkowemu, upewnij się, że traktujesz dwa rdzenie wirtualne jako jeden rdzeń i przypisujesz emulatorowi, aby preferował oba rdzenie wirtualne.

(Znalezienie procesów może być łatwiejsze z ProcessExplorer, ponieważ możesz kliknąć przycisk docelowy, a następnie kliknąć okno, co pokazuje proces dla tego okna.)


Aktualizacja: Patrz Korzystanie sekcję Przyspieszanie sprzętowe na Android docs, aby zobaczyć, jak korzystać z GPU i wsparcie wirtualizacji CPU przyspieszyć emulator.

idbrii
źródło
Ulepszone zestawy instrukcji procesora nie pomogą przyspieszyć emulatora, ponieważ jest to w zasadzie qemu, który emuluje procesor ARM.
Flow
Chyba że pomagają qemu w szybszym przetwarzaniu instrukcji ARM. (Dzięki temu może dopasować szybkość ARM.) Należy pamiętać, że plaster miodu działa wolniej na emulatorze niż na prawdziwym urządzeniu. Powiedzmy, że ARM miał instrukcje SIMD, ale x86 nie i zamiast tego emulował je jako operacje szeregowe. Włączenie rozszerzenia procesora SIMD na x86 rozwiązałoby ten problem. To powiedziawszy, nie wiem, co robi obsługa wirtualizacji, poza tym, że ma ona na celu poprawę wydajności podczas symulacji procesorów.
idbrii
Wirtualizacja i emulacja to nie to samo.
Lie Ryan,
@Lie: Prawda, ale to nie ma znaczenia: wsparcie wirtualizacji Intel / AMD (teoretycznie) przyspiesza emulator Androida. Ktoś prawdopodobnie nie potrafi się nazywać. (Domyślam się, że obsługa procesorów działa zarówno w przypadku wirtualizacji, jak i emulacji procesorów, więc dostawcy procesorów nie są w rzeczywistości nieobecni). Heck, to, że nie są takie same, nie oznacza, że ​​nie można ich łączyć jeden system: „QEMU to ogólny emulator i wirtualizator maszyn typu open source” .
idbrii