0xAA55 发表于 2014-3-17 02:00:47

吐槽一下安卓手机

安卓手机通常使用ARM处理器,虽然不同型号的手机用的CPU型号不同,但是基本都是ARM处理器。ARM处理器的指令集我感觉它的效率比x86/x64的都高很多。举个例子,x86计算A+B需要先把A装入寄存器,然后让这个寄存器加上B。而ARM却可以直接把A+B的值计算出来然后把结果装入寄存器。由此可见相同频率的x86和ARM处理器,ARM能做更多事情。
但是……安卓手机就是这点操蛋了!你处理器再屌,你只跑Java虚拟机这算个什么??就是因为安卓系统的每个应用程序都是运行在Java虚拟机内的,这导致安卓手机运行缓慢(因为虚拟指令的效率永远比真实指令慢很多倍)。
这么一快一慢折腾回来,安卓手机不仅比电脑更吃RAM,而且还超级耗电。
苹果手机,因为硬件厂商只有苹果一家公司,iOS不需要考虑什么兼容性、可移植性,因此苹果手机跑的都是真实指令,这就是为毛大家都去购买苹果手机的原因啦。

有什么说得不对的希望大家指出。

Jesus 发表于 2014-4-11 09:13:16

本帖最后由 Jesus 于 2014-4-11 09:18 编辑

首先 ARM处理器绝对不比x86高效ARM的唯一强项就是简单和省电86计算A+B需要先把A装入寄存器,然后让这个寄存器加上B。而ARM却可以直接把A+B的值计算出来然后把结果装入寄存器。由此可见相同频率的x86和ARM处理器,ARM能做更多事情
首先我说我不了解Arm, 但是就我对计算机体系结构的了解,这句话有大问题,ARM的A和B从哪里得来的? 直接访问内存总线? 直接访问低速的内存会比 内存->Cache->Higher Level Cache->Register的多级缓存策略更快?
然后毫无疑问ARM代表了RISC 而X86代表了CISC 单存的从指令执行过程而言 RISC就不可能快于CISC 因为现在内存存取才是绝对影响运算速度的原因 否则就不会有Cache和Register这两个概念了对于一条复杂指令而言 CISC只需要取指令一次而RISC可能要取指令上百次 相差两个数量级   除非你设计的Cache命中率高出CISC两个数量级 否则你的速度不可能高于CISC显然 这是不可能的。

安卓系统的每个应用程序都是运行在Java虚拟机内的,这导致安卓手机运行缓慢(因为虚拟指令的效率永远比真实指令慢很多倍)
这是个彻头彻尾的伪命题 首先忽略的一个问题就是JIT, 另外一点 就是绝大多数原生服务都是有NDK接口的, 这些都是C编写的原生代码。 另外 根据现在的CPU效率和DVM的优化程度, 虚拟机所影响的效率难以觉察。而android给大家的感觉糟糕的原因无非是费电, 不稳定, 慢。 我就一一的说明一下。
首先说费电和慢, 这就是系统设计思想的区别, android与IOS相比 最大的区别在于 一个是真正的实时多任务, 因为android可以在后台运行许多的服务程序和通知程序,而且缺乏有效监管,因为他们没有appstore一类真正严格的审核机制, 所以大家的手机后台跑了多少程序你根本不清楚,跑了多少服务你也不清楚, 这就是费电和慢的原因。 而ios 基本最小化的程序就是挂起了(少许例外)。 单任务系统和多任务系统比较 自然是多任务系统会更慢,更费电。

然后说不稳定, 这就更是伪命题了,糟糕的程序员写出的原生代码危害性大还是java代码危害性大? 相信这不用我说。android的不稳定主要是由于各个厂家 各个第三方推出的rom本身未经严格细致的测试导致。与其开发环境没有任何直接关系。 当然dvm刚刚推出jit的时候确实略有问题,但是dvm才发展了多久ios发展了多久考虑ios的历史的时候不要忘了freebsd和next


0xAA55 发表于 2014-4-13 21:46:45

Jesus 发表于 2014-4-11 01:13
首先 ARM处理器绝对不比x86高效ARM的唯一强项就是简单和省电
首先我说我不了解Arm, 但是就我对计算机体系 ...
:L遇到一个认真的家伙了,这么彻头彻尾的分析我随便打出来的字。
JIT确实让Java伪指令变成了真实指令,但是这个过程也是有一道翻译(或者说编译)的过程吧?
不过我喜欢安卓手机的一点是它有C4Droid,里面有NDK的库,可以直接编译NDK程序导出APK。
此外别拿糟糕的程序员和优秀的程序员比。你可以拿糟糕的程序员写原生代码,和糟糕的程序员写Java代码,作比较。以及优秀的程序员写原生代码和优秀的程序员写Java代码作比较。
喂!我哪里说不稳定啦?我原文哪里说不稳定啦?

秋月孝三 发表于 2014-4-14 22:35:30

Jesus 发表于 2014-4-11 09:13
首先 ARM处理器绝对不比x86高效ARM的唯一强项就是简单和省电
首先我说我不了解Arm, 但是就我对计算机体系 ...

补充一点,某些个应用的程序员注册一大堆后台服务,不耗电才怪,还有为了真正的多任务,设计系统时ui的优先级较低,而ios的ui优先级非常高,因而即便后台程序卡住了,在你操作时,系统ui也会很流畅,给你一种非常和谐的操作体验,其实安卓最初是为键盘手机设计的只是iphone推出了,才改成现在这幅模样,而问题暴露需要整改的时候,用户已经非常庞大,考虑兼容性问题,无法采取非常激进改进。当然,安卓本身是按照一个非常远大的方案设计的,最初用java作为应用开发语言,一是java程序员的数量较多,java开发周期较短,二是java的跨平台特性,总之,这个系统之所以现在能这么热,是有它的优势,当然必然会暴露它的缺点。
页: [1]
查看完整版本: 吐槽一下安卓手机