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

android 应用 32 位和 64 位有什么实质上的区别?

  •  1
     
  •   eyeshuaji · 107 天前 · 3224 次点击
    这是一个创建于 107 天前的主题,其中的信息可能已经有所发展或是发生改变。
    来点干货,“更省电更流畅”这些太笼统了
    22 条回复    2022-09-22 20:00:34 +08:00
    a1105288116
        1
    a1105288116  
       106 天前
    编译器不一样?
    lakehylia
        2
    lakehylia  
       106 天前
    现在手机 CPU 基本都是 64 位的了,64 位的 CPU 是兼容 32 位的应用的。64 位的 CPU 兼容 32 位的应用一般是通过虚拟机实现,64 位的 CPU 运行 64 位的应用,就可以直接跑。
    yukiww233
        3
    yukiww233  
       106 天前
    podel
        4
    podel  
       106 天前
    主要还是很多 android 程序本质上使用了外部的 C/C++编译的裤。调用了这些功能。
    这些外部库是 32/64 位的 ARM 二进制 不是很兼容。
    feather12315
        5
    feather12315  
       106 天前 via Android
    最直观的:地址空间大小不同。
    这里的地址空间不仅仅是 RAM ,还包括设备空间
    efcndi
        7
    efcndi  
       106 天前
    Windows 应用 32 位和 64 位有什么实质上的区别?
    moen
        8
    moen  
       106 天前
    体验上的实质区别得在新的硬件上才体现得比较明显,因为 Android 的 64 位迁移已经是要靠硬件来强制推动,之前靠软件层面的推动都不怎么有效

    去年的一些三丛集 ARMv9 架构 CPU 只有大核保留兼容 32 位的指令集,这意味着 32 位的应用全程只能运行在大核上,利用不了超大核的性能以及小核的低功耗,相比 64 位的应用会显得性能不佳且耗电
    而 ARM 最新发布的公版 CPU 其大核也砍掉了 32 位指令集的兼容,这种情况下的区别就更明显了——32 位应用根本无法运行
    AoEiuV020CN
        9
    AoEiuV020CN  
       106 天前 via Android
    没感觉的,Windows32 位 64 位共存都多少年了,也没人拒绝 32 位,单从使用体验甚至无法判断是不是 32 位,
    q1angch0u
        10
    q1angch0u  
       106 天前 via iPhone
    long 的长度不一样 [狗头]
    z836454898
        11
    z836454898  
       106 天前 via Android
    @lakehylia 64 位原生支持 32 位啊,只不过 CPU 通信带宽被浪费一半了
    taobibi
        12
    taobibi  
       106 天前
    你还别说,我打算实际测试一下,我还有能勉强开机的 nvidia tegra 4 设备,tegra 4 应该是 32 位 cpu 的性能绝唱了。测试一下纯 32 位性能和现在 64 位兼容 32 位的这种性能提升
    geekvcn
        13
    geekvcn  
       106 天前 via iPhone
    没区别,内存寻址空间不同,不兼容 32 位可以减少软件维护成本和硬件晶体管数量。32 位软件同样的功能,在不需要超过 4G 内存的时候,占用内存反而更少。另外现在安卓应用大多数基于 WebView ,也就是 WebView 升级到 64 位罢了。32 位跑 int64 和双精度浮点,需要两个时钟周期,64 位只需要一个。所以为了性能,一般 32 位软件都用 int32 ,更容易数据溢出
    JensenQian
        14
    JensenQian  
       106 天前
    以后安卓应该 32 位会逐渐消失了
    骁龙 8,8+,天玑 9000 这三安卓最新的顶级 soc 都是只有 3 个大核 A710 支持 32 位,arm 还说为了国内客户需求保留的
    JensenQian
        15
    JensenQian  
       106 天前
    @JensenQian #14 还有国内四大手机厂商,华米 ov 的应用商店也不让 32 位的包上去了
    硬件还有软件上 32 位都会逐渐消失了
    刚看了下我手机上 32 位的还有一个中行 app 和 tim 是 32 位的了
    beginor
        16
    beginor  
       106 天前 via Android
    64 位可以使用更大的内存,怎么样,很快手机内存也得卷上 32G 了
    WebKit
        17
    WebKit  
       106 天前 via Android
    @z836454898 最新的骁龙 8 已经不支持 32 位了。运行 32 位应用是通过模拟进行的
    WebKit
        18
    WebKit  
       106 天前 via Android
    @geekvcn 大多数基于 webview ?你从从哪里得出这个结论的。目前原生还是多于 H5 的
    XXWHCA
        19
    XXWHCA  
       106 天前
    对纯 JAVA 应用来说没有区别,因为全部运行在 ART 虚拟机内,区别也是虚拟机指令集性能的差异。
    对于 Native 应用(涉及到 JNI ,NDK )来说会有一定影响,总体来说 arm64 会比 arm v7a 性能更好,但是一般无法更好来对比,因为硬件的发展导致新架构就算以兼容模式运行老架构代码,性能上也有很大的提升。还有性能上的影响很大一部分和代码编写有关,好的代码在老架构也是很高效的。
    XXWHCA
        20
    XXWHCA  
       106 天前
    实际上省电是多方面导致的。最关键的是架构升级带来的指令集性能提升,然后就是硬件制造工艺的提升,这两部分就可以大大提升芯片性能并降低发热量;然后还有一部分软件方面的调教,通过控制芯片供电、频率等方式来降低功耗。
    实际上 cpu 的消耗的电量可以说全部用来发热了,性能的提升会缩短运行代码的时间,运行时间越短发热也就越小,从而更省电。
    但是这只是大部分场景下,还有一些特殊情况,比如芯片都有侧重点,比如最常见的 CPU 和 GPU ,如果使用 CPU 进行图像渲染,显然会很低效,所以 CPU 进行逻辑运算浮点运算等,GPU 进行图像运算,只有各司其职才可以更加高效。
    eyeshuaji
        21
    eyeshuaji  
    OP
       106 天前
    小白了解了,谢谢大佬们解答
    SekiBetu
        22
    SekiBetu  
       70 天前
    吃内存更多,可以一次性处理的数据更多
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4187 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 10:03 · PVG 18:03 · LAX 02:03 · JFK 05:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.