Windows 7 x64'te Android Emulator Performansını Artırma


9

Eclipse Helios'u Windows 7 x64 üzerinde çalıştırıyorum. Yeterli olması gerektiğini düşündüğüm 4.0 GB'lık bir Core 2 Duo 2.0 Ghz'im var, çünkü diğer geliştirme araçlarıyla hiçbir performans problemim olmadı.

İlk uygulamamı Android Emulator'da (2.3.3 ve 3.0) çalıştırdığımda işletim sisteminin yüklenmesi en az 5 dakika sürdü ve ilk başta HelloAndroid uygulamasını bile çalıştırmadı. Uygulamayı çalıştırmayı başardığımda bile performans dayanılmazdı.

Performansı artırmak için çeşitli şeyler denedim, ancak önemli bir gelişme gösterilmiyor. Sanırım bir şey eksik.

Denediğim şeyler:

AVD Manager'da

  1. Cihazın RAM boyutu 512'ye.
  2. 640 x 480 çözünürlük.
  3. Anlık görüntü etkin.

Proje tercihleri ​​hakkında \ Android

  1. \ Başlat \ -cpu-delay 0 -no-boot-anim -cache ./cache -avd Android3

Denemediğim şeyler: - Bir cihaza dağıtım (hiç yok).

Bu arada, MAC Mini 2.66 GHz 2 GB'de aynı sorunu yaşadım, ancak bu ayarlar fark yarattı.

Herkes bu topal performansını artırmak için herhangi bir ipucu verebilir ?.


2,8 GHz @ hyperthreading ve çılgın bir ekran kartıyla dört çekirdekli bir kart edinin. Heh. Ama cidden, emülatör yavaş. Genel olarak konuşursak, donanımınız daha güçlü bir büyüklük sırası olmadığı sürece öykünme her zaman yavaştır. Zaten sahip olduğunuzdan çok daha iyi çalışmasını sağlayacağınızı sanmıyorum.
Matthew

6
Aslında, emülatör birden fazla çekirdeği desteklemiyor (henüz). Yani saat hızı gerçekten önemli. Yeni geliştirici makinemde bile, özellikle petek ile ilgili performans sorunlarım var. En son i7 dört çekirdekli, 8 gb bellek ve katı hal sabit diskinden bahsediyorum.
Bryan Denny

Ha, bu yüzden eski 3.0 GHz Pentium 4 daha iyi çalışmalı (arka planda önemli bir şey yok)? Çılgın.
Matthew

@Bryan Denny Emülatör çok iş parçacıklı olmamasına rağmen, birden fazla çekirdek vermek iş yükünü daha az kullanılan çekirdeklere kaydırmaya yardımcı olur, ancak bu kararlılığı azaltır ve periyodik çökmelere neden olur. Bu bir hız / istikrar dengesidir, ancak hız için tüm çekirdekleri kullanmayı tercih ederim.
onik

Yanıtlar:


6

Emülatör yavaştır, çünkü tüketici bilgisayarları tarafından kullanıldığı için tamamen farklı bir CPU mimarisini taklit eden bir qemu: ARM (PC'nizde x86 (_64) vs.)

Bu, emülatörün ARM CPU'sundaki her CPU talimatının taklit edilmesi gerektiği anlamına gelir, bu da yavaştır . Ayrıca emülatör AFAIK tek iş parçacıklıdır. Bu, hızlandırmanın sadece hızlı CPU çekirdeği ile elde edilebileceği anlamına gelir - çoklu çekirdekler burada yardımcı olmaz - ve makul miktarda RAM.


CPU taklit etmek yavaş olma eğilimindedir, ancak telefon emülatörü de ARM'yi taklit eder ve çok daha hızlıdır. Sadece komut setlerinden daha fazlası. Petek çok daha karmaşık görünüyor (ve muhtemelen daha güçlü bir ARM işlemci gerektiriyor). GoogleTV x86, bu yüzden emülatör performansının nasıl olacağını merak ediyorum ... (İster
x86'ya öykünün

3

Deneyimlerime göre çok iyi çalışan bir üçüncü taraf emülatörü kullanmayı deneyebilirsiniz. Size zaman zaman gecikmeyeceğini söylemeyeceğim, ama denemeyi yapın ve bu emülatörün daha iyi çalıştığını göreceksiniz.

Ücretsiz bir uygulama değil, ama pahalı da değil. YouWave Android Emulator'da bulabilirsiniz . Denemeyi deneyin ve bize geri dönün;)


0

Petek (3.0) emülatörde kötü bir şekilde yavaştır. Honeycomb kullanarak simge durumuna küçültmek için öncelikle işlevselliklerinizin çoğunun telefon için çalışmasını deneyebilirsiniz.

CPU'nuzda sanallaştırma desteğini etkinleştirmek için bazı BIOS ayarları vardır. Bunları açmak emülatörü hızlandırabilir, ancak emin değilim. (Sisteminizin tam isimlerini bilmiyorum, ancak "sanallaştırma" veya "vt-x" veya adında bir şey olacak.

Ayrıca emülatöre bir işlemci ayırmayı da deneyebilirsiniz. Sen olabilir "işlemci yakınlık" değiştirmek görev yöneticisini kullanarak Windows işlemleri için. Bunu taklitçinizin bir işlemciyi tercih etmesi ve diğer ana görevlerinizin (tutulması gibi) bu işlemciden kaçınması için değiştirirseniz, bazı kazançlar görebilirsiniz. İşlemciniz hiper iş parçacıklıysa, iki sanal çekirdeği bir çekirdek olarak ele aldığınızdan emin olun ve öykünücüyü her iki sanal çekirdeği tercih edecek şekilde atayın.

( ProcessExplorer ile işlemleri bulmak daha kolay olabilir, çünkü hedef düğmesini tıklatıp bir pencereyi tıklatabilirsiniz ve bu pencere için işlemi gösterir.)


Güncelleme: Bkz kullanma Donanım Hızlandırma bölümü emülatör hızlandırmak için CPU içinde GPU ve sanallaştırma desteği nasıl kullanılacağını görmek için Android dokümanlar üzerinde.


Gelişmiş CPU komut setleri emülatörün hızlanmasına yardımcı olmaz, çünkü temelde bir ARM CPU'yu taklit eden qemu'dur.
Akış

Qemu'nun ARM talimatlarını daha hızlı bir şekilde işlemesine yardımcı olmadıkça. (Bu yüzden ARM'nin hızıyla eşleşebilir.) Honeycomb'un emülatörde gerçek bir cihazdan daha yavaş çalıştığını unutmayın . Diyelim ki ARM SIMD komutlarına sahipti, ancak x86 vermedi ve bunun yerine bunları seri işlemler olarak taklit etti. X86'da bir SIMD CPU uzantısının etkinleştirilmesi bu sorunu çözecektir. Bununla birlikte, sanallaştırma desteğinin ne yaptığını bilmiyorum, ancak CPU'ları simüle ederken performansı artırması amaçlanıyor.
idbrii

Sanallaştırma ve öykünme aynı değildir.
Yalan Ryan

@Lie: Doğru, ama asıl mesele şu: Intel / AMD'nin sanallaştırma desteği (teorik olarak) Android emülatörünü daha hızlı hale getiriyor. Birisi muhtemelen isimlerinde kesin değildir. (Sanırım CPU desteği hem sanallaştırma hem de CPU öykünmesi için çalışıyor, bu yüzden CPU satıcıları aslında işaret dışı değil.) Heck, sadece aynı olmadıkları için birleştirilemeyecekleri anlamına gelmiyor bir sistem: "QEMU genel ve açık kaynaklı bir makine emülatörü ve sanallaştırıcıdır" .
idbrii
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.