ปรับปรุงประสิทธิภาพการทำงานของ Android Emulator บน Windows 7 x64


9

ฉันใช้ Eclipse Helios บน Windows 7 x64 ฉันมี Core 2 Duo 2.0 Ghz ที่มี 4.0 GB ซึ่งฉันคิดว่าน่าจะเพียงพอเพราะฉันไม่เคยมีปัญหาด้านประสิทธิภาพกับเครื่องมือการพัฒนาอื่น ๆ เลย

เมื่อฉันรันแอพแรกบน Android Emulator (ทั้ง 2.3.3 และ 3.0) มันใช้เวลาอย่างน้อย 5 นาทีในการโหลดระบบปฏิบัติการและในตอนแรกมันไม่ได้เรียกใช้แอพ HelloAndroid แม้ว่าฉันจะสามารถรันแอพพลิเคชั่นได้ แต่ประสิทธิภาพก็ไม่สามารถทนทานได้

ฉันได้ลองทำสิ่งต่าง ๆ เพื่อปรับปรุงประสิทธิภาพ แต่ไม่มีการปรับปรุงที่สำคัญปรากฏขึ้น ฉันคิดว่าฉันขาดอะไรไป

สิ่งที่ฉันได้ลอง:

บนผู้จัดการ AVD

  1. ขนาด RAM ของอุปกรณ์ถึง 512
  2. ความละเอียด 640 x 480
  3. เปิดใช้งานภาพรวม

บน Project preferences \ Android

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

สิ่งที่ฉันไม่สามารถลองได้: - การใช้งานบนอุปกรณ์ (ไม่มี)

อย่างไรก็ตามฉันมีปัญหาเดียวกันกับ MAC Mini 2.66 GHz 2 GB แต่การตั้งค่าเหล่านี้สร้างความแตกต่าง

ทุกคนสามารถให้คำแนะนำเพื่อปรับปรุงประสิทธิภาพการใช้งานนี้ได้


รับ quad-core พร้อมไฮเปอร์เธรดที่ 2.8 GHz และการ์ดวิดีโอบ้า หึ แต่อย่างจริงจัง emulator ช้า โดยทั่วไปการจำลองจะทำงานช้าเสมอเว้นแต่ว่าฮาร์ดแวร์ของคุณมีขนาดที่มีประสิทธิภาพมากกว่า ฉันไม่คิดว่าคุณจะให้มันทำงานได้ดีกว่าที่คุณมีอยู่แล้ว
Matthew อ่าน

6
จริงๆแล้วอีมูเลเตอร์ไม่รองรับหลายคอร์ (ยัง) ดังนั้น clockspeed จึงสำคัญมาก แม้ในเครื่อง dev ใหม่ของฉันฉันมีปัญหาด้านประสิทธิภาพโดยเฉพาะกับรวงผึ้ง ฉันกำลังพูดถึง i7 ควอดคอร์ล่าสุดหน่วยความจำ 8 กิกะไบต์และฮาร์ดไดรฟ์แบบโซลิดสเตต
ไบรอันเดนนี่

ฮ่าดังนั้น Pentium 4 3.0 GHz รุ่นเก่าของฉันควรจะทำงานได้ดีกว่า (โดยไม่มีอะไรสำคัญในพื้นหลัง) บ้า.
Matthew อ่าน

@Bryan Denny ถึงแม้ว่าอีมูเลเตอร์ไม่ได้มีหลายเธรดการใช้หลายคอร์ช่วยเปลี่ยนปริมาณงานให้เป็นคอร์ที่ใช้น้อยกว่า แต่สิ่งนี้จะลดความเสถียรทำให้เกิดความผิดพลาดเป็นระยะ ดังนั้นมันจึงเป็นการแลกเปลี่ยนความเร็ว / ความเสถียร แต่ฉันชอบที่จะใช้แกนทั้งหมดเพื่อความเร็ว
onik

คำตอบ:


6

อีมูเลเตอร์ช้าเนื่องจากเป็น qemu ที่เลียนแบบสถาปัตยกรรมซีพียูที่แตกต่างกันตามที่ใช้โดยพีซีสำหรับผู้บริโภค: ARM (vs. x86 (_64) บนพีซีของคุณ)

ซึ่งหมายความว่าคำสั่ง CPU ทุกตัวในซีพียู ARM ของอีมูเลเตอร์จะต้องมีการจำลองซึ่งช้ามาก นอกจากนี้อีมูเลเตอร์คือ AFAIK เธรดเดี่ยว ซึ่งหมายความว่าการเร่งความเร็วทำได้โดยการใช้ CPU ความเร็วสูง - มัลติคอร์ไม่ได้ช่วยอะไรที่นี่ - และ RAM ในปริมาณที่เหมาะสม


การเลียนแบบซีพียูมีแนวโน้มที่จะช้า แต่อีมูเลเตอร์โทรศัพท์ยังเลียนแบบ ARM และมันเร็วกว่ามาก มันเป็นมากกว่าชุดคำสั่ง ดูเหมือนว่ารังผึ้งจะซับซ้อนกว่ามาก (และอาจต้องใช้หน่วยประมวลผล ARM ที่ทรงพลังกว่า) GoogleTV เป็น x86 ดังนั้นฉันสงสัยว่าประสิทธิภาพการทำงานของเครื่องจำลองจะเป็นอย่างไร ... (ไม่ว่าจะเลียนแบบ x86 หรือเรียกใช้เป็นกระบวนการแบบเนทีฟ)
idbrii

3

คุณสามารถลองใช้โปรแกรมจำลองของบุคคลที่สามซึ่งจากประสบการณ์ของฉันทำงานได้ดีมาก ฉันจะไม่บอกคุณว่ามันจะไม่ล่าช้าเป็นครั้งคราว แต่ใช้การทดลองและคุณจะเห็นว่าเครื่องจำลองนี้ทำงานได้ดีกว่ามากแค่ไหน

ไม่ใช่แอปพลิเคชันฟรี แต่ก็ไม่แพง คุณสามารถค้นหาได้ที่YouWave Android Emulator ทดลองใช้และลองกลับมาหาเรา;)


0

Honeycomb (3.0) ช้าในอีมูเลเตอร์ คุณสามารถลองใช้ฟังก์ชั่นการทำงานของคุณให้ดีที่สุดกับโทรศัพท์ก่อนเพื่อลดการใช้ Honeycomb ให้เหลือน้อยที่สุด

มีการตั้งค่า BIOS บางอย่างเพื่อเปิดใช้งานการสนับสนุนการจำลองเสมือนใน CPU ของคุณ ฉันคิดว่าการเปิดใช้งานอุปกรณ์เหล่านี้อาจช่วยเพิ่มความเร็วของเครื่องจำลองได้ แต่ฉันไม่แน่ใจ (ชื่อที่แน่นอนสำหรับระบบของคุณฉันไม่รู้ แต่พวกเขาจะมี "virtualization" หรือ "vt-x" หรือชื่ออื่น

คุณสามารถลองใช้โปรเซสเซอร์เพื่อจำลอง คุณสามารถเปลี่ยน "ตัวประมวลผลความสัมพันธ์"สำหรับกระบวนการใน Windows โดยใช้ตัวจัดการงาน หากคุณเปลี่ยนแปลงเพื่อให้อีมูเลเตอร์ของคุณชอบตัวประมวลผลเดียวและงานหลักอื่น ๆ ของคุณ (เช่น eclipse) หลีกเลี่ยงตัวประมวลผลนั้นคุณอาจเห็นผลได้บ้าง ถ้าตัวประมวลผลของคุณถูกไฮเปอร์เธรดตรวจสอบให้แน่ใจว่าคุณปฏิบัติกับคอร์เสมือนสองคอร์เป็นหนึ่งคอร์และกำหนดให้อีมูเลเตอร์ต้องการทั้งสองคอร์เสมือน

(การค้นหากระบวนการอาจทำได้ง่ายกว่าด้วยProcessExplorerเพราะคุณสามารถคลิกปุ่มเป้าหมายจากนั้นคลิกที่หน้าต่างและจะแสดงกระบวนการสำหรับหน้าต่างนั้น)


อัปเดต:ดูส่วนการใช้การเร่งด้วยฮาร์ดแวร์บนเอกสาร Android เพื่อดูวิธีใช้การสนับสนุน GPU และการจำลองเสมือนใน CPU ของคุณเพื่อเร่งเครื่องจำลอง


ชุดคำสั่ง CPU ที่ปรับปรุงแล้วจะไม่ช่วยเร่งความเร็วอีมูเลเตอร์เนื่องจากเป็น qemu ซึ่งเลียนแบบ ARM CPU
Flow

นอกจากจะช่วยให้ qemu ประมวลผลคำสั่ง ARM ในอัตราที่เร็วขึ้น (เพื่อให้สามารถจับคู่กับอัตรา ARM) โปรดทราบว่า Honeycomb ทำงานช้าลงบนตัวจำลองมากกว่าบนอุปกรณ์จริง สมมติว่า ARM มีคำสั่ง SIMD แต่ x86 ไม่ได้ทำและเลียนแบบพวกมันเป็นการทำงานแบบอนุกรม การเปิดใช้งานส่วนขยาย SIMD CPU บน x86 จะช่วยแก้ปัญหานั้นได้ ที่กล่าวว่าฉันไม่ทราบว่าการสนับสนุนการจำลองเสมือนทำอะไรยกเว้นว่ามีวัตถุประสงค์เพื่อปรับปรุงประสิทธิภาพเมื่อทำการจำลอง CPU
idbrii

การจำลองเสมือนและการจำลองไม่เหมือนกัน
Lie Ryan

@Lie: จริง แต่นั่นคือประเด็น: การสนับสนุนการจำลองเสมือนของ Intel / AMD (ในทางทฤษฎี) ทำให้ Android emulator เร็วขึ้น บางคนอาจไม่แน่ชัดกับการตั้งชื่อ (ฉันเดาว่าการรองรับซีพียูทำงานได้ทั้ง virtualiztion และการจำลอง CPU ดังนั้นผู้ขาย CPU จึงไม่ได้ปิดเครื่องหมาย) Heck เพียงเพราะพวกเขาไม่เหมือนกันไม่ได้หมายความว่าพวกเขาไม่สามารถรวมกันได้ ระบบใดระบบหนึ่ง: "QEMU เป็นโปรแกรมจำลองเครื่องต้นทางทั่วไปและเปิดและ virtualizer"
idbrii
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.