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

2023-12-14 20:20:52 +08:00
 asdgsdg98
就我个人使用上来说,64 位程序的优势就是能利用 4G 以上的内存。32 位程序不能用 4G 以上内存,会报 out of memory 。
除此之外,64 位程序的体积更大(更占硬盘),内存消耗更大(更占 RAM ),并且在不需要占用超过 4G 内存的情况下,运行速度两者没有显著差异。

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

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

对硬件也是一样,跑 32 位程序需要在硬件上留下 32 位指令集处理的部分,现在新的 ARM CPU 为了提高效率已经把这块删了。
jim9606
2023-12-15 09:53:40 +08:00
对 x86 来说就是更多可用的寄存器,以及可以在关键路径上使用启用新的 AVX/AVX2 指令来优化。虽然说同一个程序可以同时为新旧 cpu 提供多个执行路径,但编译器自动优化未必会这样做。
ARM 的问题是现在有不支持 AArch32 模式的 ARMv9 处理器核了,换句话说不能保证 ARMv5/v7 目标的程序可以在所有处理器上运行。出于兼容,或者就是懒,以及减小程序体积,不在乎性能,是大部分消极跟进 64 位应用的原因。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1000468

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX