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

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

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

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