V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
eyeshuaji
V2EX  ›  Android

用虚拟机装安卓系统(X86),和用安卓模拟器有什么区别?谁的性能更好?

  •  
  •   eyeshuaji · 145 天前 · 5698 次点击
    这是一个创建于 145 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如用 VMware 装个安卓 X86 ,和那些雷电模拟器之类的有什么区别,哪个性能更好?
    16 条回复    2024-07-08 17:59:30 +08:00
    AoEiuV020JP
        1
    AoEiuV020JP  
       145 天前
    第一反应是 android studio 的 qemu 模拟器,可你居然说的是雷电模拟器,
    那就没什么区别, 手游模拟器都是基于 virtualbox 虚拟安卓 x86 , 和 vmware 装的没啥区别, 要说也是 vmware 和 virtualbox 的区别,
    不过手游模拟器重点在于针对手游的优化吧,各种机型模拟,按键映射之类的功能,
    HojiOShi
        2
    HojiOShi  
       145 天前
    安卓模拟器性能优化更好。虚拟机装的滑动下界面都卡。
    w568w
        3
    w568w  
       145 天前   ❤️ 3
    那显然是手游模拟器。这些模拟器本质是经过裁剪和驱动优化的 Android x86 镜像,运行在 VirtualBox 之类的开源虚拟机内。

    另外,严格意义上来说绝大部分 PC 安卓模拟器其实是「仿真器( Emulator )」,因为它完全模拟了系统的全部底层硬件设备,性能相对较低( Android Studio 里的英文翻译也是 Android Emulator )。

    仅模仿系统外部行为,利用主机环境进行指令执行的才是「模拟器( Simulator )」,XCode 附带的那种就是,因为模拟器和主机共用相同的 Darwin 内核。

    Linux 平台上也有一些 Android 模拟器,例如 Anbox 、Waydroid 等,但一是对 Linux 内核有要求,二是由于缺少好的显卡驱动,图形性能可能还不如经过优化的仿真器。
    acess
        4
    acess  
       145 天前
    话说我也一直蛮好奇那些虽然免费但商业闭源的模拟器用的都是什么技术……

    android studio 自带的 avd 我记得 angle gpu 翻译层有一阵子都坏了很久没修,不知道现在修了没……默认的 opengl 直通则是会出现渲染 bug ; swiftshader cpu 软件渲染则卡爆。

    然后像雷电 mumu 之类貌似用的也是 angle ,但很丝滑而且渲染都正确。
    acess
        5
    acess  
       144 天前
    (哦,google aosp 官方文档提到过,用 angle 是把 opengl es 翻译成 directx ,因为一般情况下桌面 windows 环境的显卡驱动 directx 的问题比较少)
    acess
        6
    acess  
       144 天前   ❤️ 1
    还有一件事我感觉蛮神奇的,就是 arm 转 x86 的转译,二进制翻译。

    我印象里大概十多年前试过 qemu-user-static ,开源的,好像只相当于原生十分之一的性能。

    结果又是很多很多年前吧,intel 出 atom x86 手机的时候,印象里 intel 搞的转译效率亮瞎我了,有个 60-70%好像。

    现在也是,好像 waydroid 是用的闭源的转译层,好像叫 houdini ,是从微软这边 wsa 子系统扒来的……貌似效率也是很高。

    感觉这方面怎么网上都很少有科普,甚至转译层叫什么名字都很少有人提,也不知道为什么效率会差那么多
    Kenshiro
        7
    Kenshiro  
       144 天前
    插个楼问下推荐的 OS ,最好能兼容 VMVare 的
    eyeshuaji
        8
    eyeshuaji  
    OP
       144 天前
    @acess #6 我记得原生安卓 X86 用的也是 houdini
    flyqie
        9
    flyqie  
       143 天前 via Android   ❤️ 1
    @acess #6

    你说的现在叫 ibt ,intel 家这个方案好多年了,一直在维护。

    内部名字似乎一直都是 houdini ,效率好邪恶原因是,intel 自己优化,能调 native 的调 native ,调不了的才 emu ,而且 emulator 上也下了不少功夫。

    这也是为什么 houdini 那么一大坨的原因。。带了一坨 native so 。
    flyqie
        10
    flyqie  
       143 天前 via Android   ❤️ 2
    @w568w #3

    分怎么看,linux 上的 anbox 和 waydroid 这种方案比较轻量级,各项性能因为不走 vmm 也会比 emulator 高,但问题也很突出,隔离不太方便做,需要对 aosp 做不少修改,再加上 linux desktop 的生态问题,toC 市场不太好搞。

    windows 在几年前网易也做过那种类似 container 的方案,但后来似乎是因为兼容性等原因放弃了,目前还是以 mumu 这种用 vbox 做 vmm 层为主。

    toB 这块的话,目前商业方案据我所知大部分都是 aic(aosp in container),真正做 vmm 的很少,因为 vmm 的虚拟化损耗和资源利用率还是挺麻烦的。
    flyqie
        11
    flyqie  
       143 天前 via Android   ❤️ 1
    @acess #4

    图形图像性能这边我要是没记错的话,各家一般都会在 guestos 和 vmm 这边一起搞花活,不会直接拿来就用,都要做蛮多优化的。
    acess
        12
    acess  
       143 天前
    @flyqie 诶我印象里是用 flac 编解码这样基本就是纯计算的工作负载对比的,好像不涉及太多系统/外部调用之类……
    acess
        13
    acess  
       143 天前
    @flyqie (哦坏了,我可能有点记错抱歉……houdini 效率高的印象也不是我自己跑出来的,只是看网上的评测文章,这样就不太能说明问题了)
    acess
        14
    acess  
       143 天前
    https://www.igao7.com/news/201406/x86.html

    搜到了这篇,里面有使用原生 x86 和 armv7 转译的跑分对比,这一篇里测出来貌似损耗就很大了,只剩三分之一了
    flyqie
        15
    flyqie  
       143 天前 via Android
    @acess #14

    文章太老了呀,aosp 跟 intel 都在发展,并且如果要是大量跑到 emu 而不是 call native lib 的话确实性能不太好,没办法。
    flyqie
        16
    flyqie  
       143 天前 via Android
    @flyqie #15

    不过也得分跟谁比了,拼原生肯定干不过,不过 intel 在这个方案上也比其他的有优势。

    这是 intel 这边的产品介绍,几年前有相关人士在知乎回答过说是国内这边做的,前几个月我发邮件咨询商务也确实能看出来是中国人名字。

    https://www.intel.cn/content/www/cn/zh/developer/topic-technology/bridge-technology.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3483 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:49 · PVG 18:49 · LAX 02:49 · JFK 05:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.