让Android模拟器运行得更快

让Android模拟器运行得更快,android,performance,testing,android-emulator,emulation,Android,Performance,Testing,Android Emulator,Emulation,Android模拟器有点迟钝。对于某些设备,如摩托罗拉Droid和NexusOne,该应用程序在实际设备中的运行速度比模拟器快。在测试游戏和视觉效果时,这是一个问题 如何使仿真器尽可能快地运行?我一直在玩弄它的参数,但还没有找到一个显示出明显改进的配置。我认为这是因为clr虚拟机直接使用cpu,而无需操作码转换。 它可能是针对clr应用程序的优化,也可能是在英特尔处理器上启动的windows mobile/windows phone 7。 Android平台基于linux,理论上可以在i686环

Android模拟器有点迟钝。对于某些设备,如摩托罗拉Droid和NexusOne,该应用程序在实际设备中的运行速度比模拟器快。在测试游戏和视觉效果时,这是一个问题


如何使仿真器尽可能快地运行?我一直在玩弄它的参数,但还没有找到一个显示出明显改进的配置。

我认为这是因为clr虚拟机直接使用cpu,而无需操作码转换。 它可能是针对clr应用程序的优化,也可能是在英特尔处理器上启动的windows mobile/windows phone 7。 Android平台基于linux,理论上可以在i686环境下的虚拟机上启动Android。在这种情况下,虚拟机(如vmware)可以直接执行某些操作码。但是,只有在Java上编写时,才允许使用此选项。因为Java会在执行之前解释字节码或预编译它。 见:

我最近从一个具有3gb内存的内核2@2.5切换到一个具有8gb内存的i7@1.73(两个系统都运行Ubuntu10.10),现在模拟器的运行速度至少是原来的两倍。投入更多的硬件肯定会有所帮助。

我注意到emulator默认只使用核心0,而大多数Windows应用程序默认使用“任意”核心。另外,如果你把它放在另一个内核上(比如最后一个内核),它可能会让模拟器发疯。如果可以,您可以尝试将大量CPU使用的应用程序放在其他CPU内核上,以提高速度

硬件方面,获得最快的适用于单核应用程序的CPU。两个以上的内核在模拟器性能方面可能不会有太大的差异

Eclipse+Android模拟器一起消耗了大量内存。我建议至少使用3 Gig的RAM,因为我使用的是一个有2 Gig RAM的系统,它的速度变慢了,因为系统耗尽了RAM,开始使用页面文件


我觉得最好的CPU可能会有一个高时钟(顺便说一句,在同一系列的CPU中,只使用时钟作为衡量标准),能够很好地处理非SIMD操作,并且有一个涡轮增压机制。基于Java的基准并不多,但总体上看,还是要寻找压缩和office之类的应用程序基准。不要看游戏或媒体,因为它们受SIMD的影响很大。如果你找到一个Java映像,那就更好了。

更新:现在有了Intel x86映像,最好的答案就是上面的zest

正如Commonware正确指出的那样,emulator的速度很慢,因为它模拟的是ARM CPU,这需要转换为Intel操作码。这种虚拟化占用了CPU

为了使仿真器更快,您必须给它更多的CPU。从一个快速的CPU开始,或者如果可以的话升级

然后,为仿真器提供更多的CPU:

  • 禁用超线程-由于仿真器似乎没有使用多个内核,超线程实际上减少了仿真器将获得的总CPU时间。禁用HT将降低利用多个CPU的应用程序的速度。必须在BIOS中禁用超读
  • 使仿真器在CPU 0以外的CPU上运行-这比关闭HT的影响小得多,但有一些帮助。在Windows上,您可以指定进程将在哪个CPU上运行。许多应用程序都会占用CPU 0,默认情况下,emulator在CPU 0上运行。我将模拟器更改为在最后一个模拟器上运行。请注意,在OSX上不能设置关联(请参阅)
  • 这两个变化到位后,我看到大约有50%的改进

    要在Windows 7上设置处理器相关性,请执行以下操作:

  • 打开任务管理器
  • 单击查看所有进程(以管理员身份运行,否则无法设置处理器关联)
  • 右键单击emulator.exe并选择设置关联
  • 在“设置相关性”对话框中,仅选择最后一个CPU
  • 注意:当您以这种方式更改关联性时,它仅在进程的生命周期内更改。下一次开始,你必须再做一次

    在今年的谷歌I/O(2011)上,谷歌展示了一款更快的模拟器。问题不在于ARM和x86之间的字节码,而在于QEMU执行的软件渲染。他们绕过QEMU的渲染,直接将渲染发送到我相信的X服务器。他们展示了一场赛车比赛,表现和fps都非常出色


    我想知道开发人员什么时候可以使用它…

    编辑虽然使用Intel映像可以获得一些性能提升,但使用Genymotion可以获得更高的性能。看

    先前的答案

    使用ADT rev 17,emulator支持在Windows和Mac OS X上以虚拟化模式运行x86系统映像。这对性能有显著影响

    ADT第17版注释:

    配置虚拟机加速:

    快50%

    窗户:
    • 安装“英特尔x86仿真器加速器(HAXM)”=>SDK管理器/Extras
    • 安装“英特尔x86 Atom系统映像”=>SDK管理器/Android 2.3.3
    • 转到Android SDK根文件夹并导航到extras\intel\Hardware\u Accelerated\u Execution\u Manager。执行文件IntelHaxm.exe进行安装。(在Android Studio中,您可以导航到:设置->Android SDK->SDK工具->英特尔x86仿真器加速器(HAXM安装程序))

    • 使用“英特尔atom x86”CPU/ABI创建AVD

    • 运行emulator并检入正在运行HAXM的控制台(打开命令提示符窗口并执行命令:sc query intelhaxm)

    也别忘了安装这个

    注意:在AVD创建期间添加仿真内存:硬件/新设备/设备ram大小/设置值512或更多

    Linux:
    • 安装KVM:打开谷歌,写“KVM安装”
    • 使用“英特尔atom x86”CPU/ABI创建AVD
    • 从命令行运行:emulator-avd avd_name-qemu-m 512-enable kvm
    • 或者从E
      emulator -avd <avd_name> -gpu on