智能手机|手机越来越卡的根源到底在哪?

日前 , 英特尔的十二代酷睿发布 , 英特尔打响了绝地反击战 , 性能大幅提升 , 终于不再出现桌面处理器被苹果手机处理器羞辱的场面了 。
从技术指标看 , 苹果的A15单核性能的Geekbench5能跑1700多分 , 这个性能超过10代i7 , 处于11代i7的水平 。即使的安卓阵营 , 骁龙888的Geekbench5性能也有1100多分 , 这个成绩也有8代i7的水准 。
但是 , 当我们真正使用的时候 , 感受不到手机处理器强大的性能 。从负载来看 , 手机APP大多都是网页版能够解决 , 只要很低的性能就能流畅运行 。
为什么 , 我们的处理器性能越来越强大 , 但是用起来却越来越卡呢?
流畅的手机应用需要什么性能
目前手机的分辨率大多在1080p+的级别 , 因为全面屏幕 , 往往做到2400*1080 , 与标准的1080P性能需求差不多 。
而手机进入1080P时代是在2012年末 , 2013年初 。当时流行的处理器是nVIDIA的Tegra3、骁龙8064、三星猎户座4412和华为海思的K3V2 。而当时这些处理器 , 就已经可以流畅运行日常APP了 。
【智能手机|手机越来越卡的根源到底在哪?】笔者手里有一些不同时代的手机 , 我用geekbench3来跑分 , 看单核心性能差距多少 。
主流的骁龙865单核 , 性能在3500分以上 。
小米的骁龙888在跑Geekbench3的时候不能开全速 , 看不出实力 。
骁龙855是3200以上、骁龙835在1800分左右、骁龙660是1500分左右、骁龙810是1100分左右、骁龙600是600分 。
笔者手里最弱的手机是金立的s5.5 , 处理器是MT6592 , 能跑400多分 , 这个手机也是1080P的分辨率 。
按照今天的app和安卓系统 , 大约单核1100分的手机就不太好用了 。金立s5.5只有400分的性能 , 今天下载一个最新版本的APP , 看起APP要很久很久 , 花好几分钟进去 , 使用时候非常卡顿 , 基本已经无法使用了 。
但是 , 如果你用合适的APP版本 , 这个性能只有主流十分之一性能的机器 , 依然可以流畅运行 。
金立s5.5的系统是安卓4.42 , 这个系统MT6592单核足以运行流畅的桌面 。而如果使用安卓9.0 , 骁龙660也会感觉卡顿 , 如果使用安卓12 , 骁龙855的流畅度也不太好 。
所以 , 系统版本直接决定了手机的卡顿 。
在APP上 , 如果你在金立s5.5使用爱奇艺最新版 , 开启APP要以分钟计算 , 基本无法使用 。但是 , 如果你在用爱奇艺极速版的最初版本 , 大约7秒可以开机 。然后流畅播放1080p视频 , 正常使用完全没有问题 。
同样 , 喜马拉雅极速版最初版本 , 5秒左右冷启动 。与骁龙888用喜马拉雅最新版本的时间差不多 , 一切功能正常使用 。
就是说 , 目前我们所使用主流手机只要十分之一的性能 , 就足以流畅运行 。
现在手机卡顿 , 是系统和APP性能浪费造成的 。
安迪比尔定律
在IT行业 , 除了摩尔定律 , 还有安迪比尔定律 。硬件带来的高性能 , 会被软件的浪费带走 , 用户依然得不到良好的体验 。
对于手机APP来说 , 同样一个功能 , 如何编程取决于程序员的实现方式 。如果硬件水平有限 , 为了保证流畅 , 程序员就要做各种优化 , 使用执行效率比较高的工具 , 用各种算法优化来编程 。这往往需要程序员有很高的技术水平 。
如果硬件不加限制 , 那么程序员会自然而然的使用低效率 , 但是编程难度较小 , 不太需要优化的工具来编程 , 降低劳动强度和对程序员的能力要求 。
在80年代初 , 为FC游戏机编程的日本程序员 , 可以直接看机器码编程 , 80年代中期 , 这些程序员就要用汇编语言了 。
日本一直到PS3时代 , 还可以直接对硬件编程 , 提升效率 , 所以PS3的性能比今天的手机弱很多 , 但是游戏画面依然是今天大部分手机游戏无法企及的 。
所以 , 在2012年 , 程序员设计的程序 , 要让当时的处理器跑流畅 。


推荐阅读