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