64 位应用程序和 32 位应用程序相比有什么优势吗?为什么手机厂商都说 64 位更快更省电? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
asdgsdg98
V2EX    问与答

64 位应用程序和 32 位应用程序相比有什么优势吗?为什么手机厂商都说 64 位更快更省电?

  •  
  •   asdgsdg98 2023-12-14 20:20:52 +08:00 2468 次点击
    这是一个创建于 695 天前的主题,其中的信息可能已经有所发展或是发生改变。
    就我个人使用上来说,64 位程序的优势就是能利用 4G 以上的内存。32 位程序不能用 4G 以上内存,会报 out of memory 。
    除此之外,64 位程序的体积更大(更占硬盘),内存消耗更大(更占 RAM ),并且在不需要占用超过 4G 内存的情况下,运行速度两者没有显著差异。

    是因为 aarch64 平台和 x86-64 平台不一样?我手机用的少
    13 条回复    2023-12-15 09:53:40 +08:00
    72MpQOSsJhyLs88N
        1
    72MpQOSsJhyLs88N  
       2023-12-14 20:26:17 +08:00
    可以把全家桶塞到一个软件里了
    billlee
        2
    billlee  
       2023-12-14 20:33:56 +08:00
    x86-64 上可以使用的寄存器更多,更宽,arm 不清楚
    asdgsdg98
        3
    asdgsdg98  
    OP
       2023-12-14 20:36:44 +08:00
    @xianghou 确实,一个个 app 怕切程序被系统杀给你所有功能都做进去

    @billlee 看了下文章,arm64 位平均快 0.1 秒左右……
    crysislinux
        4
    crysislinux  
       2023-12-14 20:38:40 +08:00 via Android
    貌似 32 位是单独的一块核支持的,只是为了维持兼容性,制程可能也没 64 位的高。就费电了
    asdgsdg98
        5
    asdgsdg98  
    OP
       2023-12-14 20:43:07 +08:00
    @crysislinux 感觉是正确答案了,搜了下新芯片上了 armv9 ,完全不兼容 32 位完全无法运行。所以手机厂要赶着上 64 位。
    ly841000
        6
    ly841000  
       2023-12-14 20:46:10 +08:00
    x86-64 指令和地址位更长,同样的指令需要的缓存更多,大多程序并不会更快
    munoya
        7
    muntoya  
       2023-12-14 20:49:06 +08:00
    因为不管你用不用 64 位程序,CPU 和系统都是 64 位了。一个程序以 32 位运行,64 位的数据得操作两次,以 64 位运行一次就够了。不过这是理论上的,很多程序转为 64 位单纯就是为了兼容把 32 位扩到 64 位,没有做优化。
    asdgsdg98
        8
    asdgsdg98  
    OP
       2023-12-14 20:49:54 +08:00
    @ly841000 我用那么多年电脑确实没感觉到 64 位更快过。除此之外我还能想到的优势就是 arm on Windows 上 64 位程序转译效率远胜 32 位
    stinkytofu
        9
    stinkytofu  
       2023-12-14 21:03:51 +08:00
    很简单, 不是说 64 位比 32 位快, 是因为 64 位更现代,CPU 都是围绕 64 位设计的,32 位只是历史的包袱,32 位程序是后娘养的, 支持 64 位的程序可以获得更多的计算资源, 当然快啦!!!
    asdgsdg98
        10
    asdgsdg98  
    OP
       2023-12-14 21:20:12 +08:00
    @muntoya
    @stinkytofu 以前为了兼容性都收集的 32 位程序,现在感觉可以换了,也没人用 32 位系统了,提前备战 arm Windows
    Herry001
        11
    Herry001  
       2023-12-14 21:29:37 +08:00
    因为新的芯片压根不支持 32 位……现在都是靠模拟在跑
    msg7086
        12
    msg7086  
       2023-12-15 01:10:37 +08:00   2
    上面说的丢包袱算是最大的区别了。
    比如说 x86 平台上,支持 32 位意味着你需要支持三十年前的 MMX 技术,然后你编译软件的时候 target 可以选八十年代的 80386 ,就算是选比较新的 target 那也是九十年代的 i686 。你的编译器要为了去支持古老的 CPU 而生成很多不必要的代码,做不必要的兼容。(再加上 MMX 和 64 位寄存器是共用的,意味着 CPU 要增加很多数据擦除和切换的成本)
    而 AMD64 平台则必定有 SSE2 ,最差最差也可以支持一定量的 SIMD 矢量并行技术,既不需要编译成标量版本,也不需要标量矢量各编译一遍然后动态切换。

    对硬件也是一样,跑 32 位程序需要在硬件上留下 32 位指令集处理的部分,现在新的 ARM CPU 为了提高效率已经把这块删了。
    jim9606
        13
    jim9606  
       2023-12-15 09:53:40 +08:00 via Android   1
    对 x86 来说就是更多可用的寄存器,以及可以在关键路径上使用启用新的 AVX/AVX2 指令来优化。虽然说同一个程序可以同时为新旧 cpu 提供多个执行路径,但编译器自动优化未必会这样做。
    ARM 的问题是现在有不支持 AArch32 模式的 ARMv9 处理器核了,换句话说不能保证 ARMv5/v7 目标的程序可以在所有处理器上运行。出于兼容,或者就是懒,以及减小程序体积,不在乎性能,是大部分消极跟进 64 位应用的原因。
    /div>
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2624 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 07:15 PVG 15:15 LAX 23:15 JFK 02:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86