本文来自微信公众号:不客观实验室 (ID:zhinan617),作者:lzh,原文标题:《Android厂商通过“存储”来提升系统流畅度,这方向正确吗?》,题图来自:视觉中国
最近家里老人老经常向我抱怨,手机总是莫名其妙出现容量不够的提醒信息,电池也不耐用了,正好马上到双十一,看着电子产品优惠力度也不错,就想着趁着机会给家人换个新手机。
往日我都把目光聚焦于旗舰机,千元机鲜有关注。最近查了一下才发现,千元机虽然在拍照、处理器、下巴黑边宽窄方面和旗舰机有大差别,但是在“存储”这件事上和旗舰机相差并不大,运行内存基本都6GB起步,存储容量也升到了128GB,这和目前大多数国产厂商的旗舰机入门硬件规格保持一致。
在新手机还未到,给家人腾空清理手机时,我发现即使是5年前的小米K20,除了存储已经满了外,并没有明显的卡顿现象。而即使这样的“老手机”,都在某个系统大版本更新之后,增加了为提升系统流畅性而添加的“内存扩展”选项。
无独有偶,小米和华为在前端时间都通过OTA更新,加入了关于“存储”的一些新功能。
比如,小米就为其旗舰小米12S Ultra,围绕“存储”做了一系列升级,如加入了内存空间扩展能力、优化了系统核心场景流畅度、优化了系统资源调度能力,目的就为最大限度减少系统卡顿、提升流畅性。
而华为尽管没有在运行内存上做文章,但却更新了一个重要功能:空间存储压缩技术。
虽然听着非常拗口,但其实简单来讲,就是系统自动“查重去重”功能,把重要文件提取出来单独保留一份,删除多余重复文件达到节省存储空间目的。
这两家看似做法挨不上边,一个主要操作的是运行内存(RAM),另一个主要操作的是只读存储器(ROM),但最终实现的作用却殊途同归。
都是通过对“存储”优化,来提升应用系统流畅性,以及应用文件读取速度。
暂时解决了流畅性,但新的问题来了
纵使目前很多国产Android手机的系统版本已经升级到Android 12,但在使用一段情况后,还是会用起来不如iOS流畅?
其实想深度讨论这问题,又会是一个新选题。
简单来讲,一方面是系统“自身原因”,归根到底是因为Android系统和iOS系统运行机制作用原理不同,Android不管如何升级,都摆脱不了虚拟机运行机制,而iOS则采用沙盒运行机制。
这里打个比方,Android的运行作用原理可以理解为一位同学就是一个APP,教室就是虚拟机,一名学生在教室中可以很快完成作业,但当不断有学生(APP)进入到教室(虚拟机)后,就会出现交头接耳现象,甚至互相干扰,这样就会让写作业的效率降低。而iOS沙盒机制可以理解为每名学生单独占用一间教室,那这完成作业效率可想而知。
如果Android想提升系统流畅度,扩大存储空间是最有效的方式。
而另一方面,Android软件缺乏有效监管,安装到手机中不仅会一直驻扎到内存中,还会进各种“联合启动”,简直一个后台大联欢。
iOS系统则会对软件自启动进行严格监控,以至于发展到iOS 16,连应用之间粘贴都会有额外通知,对第三方软件实现了实时监控和启动限制。
而在对有限运行内存和存储空间进行的“深度”优化,实际效果如何?相信这是绝大多数用户关注的,恰巧我手边有小米12S Ultra和华为Mate 50。
在把小米12SU更新到最新系统后,设置中除了拓展3GB内存外,并没有单独对于“内存空间扩展能力”的设置选项,但在使用中可以明显感觉到,更新后的在流畅和响应速度的提升,主要感知为一下几点:
在滑动屏幕时候能明显感受到丝滑顺滑的跟手
向上滑动退出应用也没有了粘滞感
安装软件的速度提升明显,有几乎一倍的感知提升
系统流畅性比上个版本更好
华为的空间存储压缩功能则需要在系统更新后进行手动设置,它是集成在系统的手机管家中,用户需要点击清理加速,就能看到文件压缩和应用压缩选项,点进去就能看到系统选好的重复文件,选择文件进行压缩后,这条选项就不会再出现。
因为本身我只使用Mate 50拍照,机内安装的软件并不多,但系统还是显示可以压缩100来兆。
起初我还在想,通过软件升级方式就可实现系统流畅性整体提升,这对于Android手机简直福音。但在后续使用过程中,却出现了问题。
首先是小米12S Ultra新固件的续航时间并没有上个版本强,尤其是夜晚待机时,从之前一觉醒来消耗4%电量直接翻倍为8%,而在游戏流畅度方面,尽管没有大的提升,机身却出现了明显发热的情况。
根据华为官方信息,使用动态空间存储压缩功能可以为256GB省出大约20GB的空间,这对于手机存储相形见绌的用户来讲,确实可以起到一定作用。但这项技术主要是针对存储照片、手游数据和不常用的应用数据进行压缩,对用户最“头疼”的微信,并不会进行优化。
不过有总比没有强,而对于系统而言,因本身鸿蒙HarmonyOS 3就足够流畅,加上我Mate50的手机安装应用比较少,因此在系统流畅度方面,并无明显差别。
为了流畅性,厂商不得不做出“牺牲”
不管是小米还是华为,其实都只是依托于现有的技术进行“优化”。小米的内存空间扩展能力其实就是在虚拟内存技术基础上的技术再调整,这是一项存在于Windows的“上古”技术,早在Android 2系统中就已经实现,当时还划分为zRAM与swap两大内存优化机制,只不过受限于读写和处理器性能,效果并不理想。
简单来讲,zRAM是通过把不常用的应用代码进行压缩,使用时候再进行“展开”,这种压缩和展开方式,对处理器运算能力比较依赖。而swap是目前手机厂商最常用的技术。是把空闲的ROM中划定一部分容量作为RAM运行内存使用,这样手机就可以把一部分应用软件通过这种方式,让它暂存在ROM中划定的空间中来读取运行。
但问题是,虽然ROM的存储读写速度经过发展有提升,但仍然没有达到运行内存本身的速度,应用数据一多,就会出现明显卡顿。
不管使用哪项内存优化技术,要不就造成处理器高负荷运行发热,要不就造成本不该出现卡顿的应用卡顿。
而华为的空间存储压缩功能是根据系统中一个“标识”来筛选重复文件,但现阶段有很多应用并不会直接提供这个标识。并且应用一多,筛选便会一直在系统后台进行,对于手机重度使用者和手游玩家来说,这样频繁读取是否会间接对ROM带来额外损耗,存在一定的不确定性。
接下来的问题是,内存拓展真能带来实打实的流畅性提升吗?
从国内测试结果来看很出乎意料,打开这种“内存融合”技术后,很多原本没有出现流畅性问题的机型都出现了系统卡顿、发热,甚至部分在通过增加可用内存,比如从3GB提升到7GB后,表现反而没有关闭这项低内存效果好。
这也就解释了为什么小米会着重优化3GB带来的效果,而不是盲目增加内存拓展的容量,显然前者带来的应用效率是要超过后者的。
单靠手机厂商并不够
在我看来,简单的通过“内存扩展”技术以及“空间存储压缩”功能来提升系统流畅性,一开始会觉得流畅,但久而久之,反而会带来一些意想不到的新情况。
Android会越用越卡这是系统作用机理问题,打开APP软件一次除了会来回往复读写外,还会留下一定信息碎片,同时还会有强制回收应用问题,久而久之,就会造成系统卡顿发热。
Android手机加入“内存融合”技术初衷非常好,但问题是,不同品牌的手机,RAM和ROM规格不尽相同,这样就导致在千元机上和旗舰机中开启“内存融合”后的体验完全不同。
很有可能旗舰机因为的RAM和ROM能够承载更大的读写数据,反而通过这样的“借用”ROM技术手段可以提升系统流畅性,而中端机RAM和ROM因承载的读写差距较大,反而开启后,加上处理器性能并不足以“供能”,就会造成系统、应用卡顿,效果适得其反。
当然,想解决这个问题一方面是Android厂家问题,另一方面也离不开上游应用APP开发商和上游硬件供应链协同解决,在之前《2022年,Android手机为什么要全面普及64位应用?》这篇文章中,我就有提到:
目前很多主流软件仍为32位应用,如果运行在骁龙8+和天玑9000这类的新架构处理器上,就只能被锁定在低性能核心上,这样不管是锁屏“睡眠”还是打开“性能模式”运行,应用始终都处在并不省电的核心上,会因核心性能不足造成卡顿还费电。
不管是最早的Android“黄油计划”,还是6.0引入的延缓App后台的CPU和网络活动减少电量的消费的Doze模式,其实在国内都出现了水土不服情况,国内的Android应用程序会读取各种信息,甚至会应用联动,加上动辄几百兆大小,它们的进程会想方设法的存在于系统后台,无法完全关闭。
而在压缩数据提升“读取性能”这件事儿上,谷歌已经在 Android 13中默认将可扩展的只读文件系统(EROFS)作为系统分区,这能让系统分区随机读取性能平均提升20%,并减少14%系统空间占用,还可避免低内存情况下的卡顿。
这也是华为在EMUI 9.1就采用的技术,只不过之后做了开源,后续也有其他品牌跟进。
而考虑到目前国内升级到Android 13的机型并不多,这项技术无法在大众用户中进行快速普及,而对于较早的中端机来讲,能不能升级到 Android 13 还是个问题。
对于大众用户而言,如果不是像我这样手机装几百个APP的重度用户,现在的8GB、12GB RAM是完全够用的,如果容量不是非常满,动态空间存储压缩功能并不能派上用场。
最后我想说,如果通过这样复杂的设置才能提升手机体验,这本身就是有悖于厂商们所说的“科技以用户为本”的初衷。我能理解 Android 手机厂商迫切想提升系统流畅度,但这可不是光靠手机品牌自身努力就能实现的,而是整个 Android 生态共同作用的结果。
本文来自微信公众号:不客观实验室 (ID:zhinan617),作者:lzh