欢迎来到某某水务平台有限公司!

联系电话:020-88888888

新闻中心

News
您的位置: 主页 > 新闻中心 > 公司资讯

当手机厂商说在 Android 底层做优化的时候,它们到底在做什么?

发布日期:2024-05-06 07:06浏览次数:66

很多手机厂商都喜欢说“优化”一词,当然还有给硬件做优化,请问这些“优化”工作的具体内容是指什么?

比如电源管理,还有安卓的bug

说优化这俩字最多的不是厂商,是啥都不懂的所谓评测师们...

软件打开速度慢→优化差

待机短→优化差

发热大→优化差

玩游戏帧数低→优化差

软件切换卡顿→优化差

拍照对焦速度慢→优化差

拍照噪点多→优化差

xxxx→优化差

优化是个筐,啥都往里装

现在很多人在做评测,但是这些人中很少有人能够说明白出现这些问题到底问题出在哪儿,以上举的这些例子很大可能问题是出现在硬件上的,比方说系统卡顿很有可能是内存带宽不够,这属于硬件问题,从设计之初就存在的,后期除非更换硬件否则再怎么优化也没办法解决。

国内做评测的人数猛涨不是没有原因的,做这个确实很赚钱,啥都不会都能做,厂商有新机要发布就得请媒体做宣传,就得请他们,然后他们拿着评测机吐个槽,过段时间写篇黑文再找厂商要公关费删帖,这就是现状,这些人的大量涌入导致国内评测水平直线下降,现在国内评测环境已经污浊不堪,大家都没得玩就只能整天掐架了,整天说些玩烂了的老梗黑这个厂商黑那个厂商,比方说小米的发热魅族的续航等等,哪怕厂商已经解决了这些问题他们还是拿这些毫无营养的话来黑厂商,偏偏还有粉丝吃这一套。再不然就是整天盗图,从其他媒体那儿偷过来假装是自己获得的第一手新闻,并且信誓旦旦的告诉别人这是真的,之前已经好几次有人被假新闻钓鱼了。(见本回答末尾图片)

当然这不包括做的比较好的评测机构,Zealer、FView、科技美学等等,他们还是投入了精力和资金在做这些事的,在这一点上无论他们做的成果如何,我还是觉得很佩服他们。

说回优化,优化这种事厂商一般比较少拿来说,一般能说详细点比较好,比方说摄像头优化到底优化了些啥,到底是对焦算法优化还是白平衡优化了。发布会只用一句优化带过去那根本填不满一两个小时,下了那么大功夫改进一句话带过工程师得哭死,所以一般厂商会把具体优化了些什么东西说出来的。

等有空有闲心的时候考虑弄一个模版,只要拿到机器谁都可以写一篇像模像样的评测出来

┐(′д`)┌

---

解释一下,这条微博中的图是微博一位网友做的钓鱼图,然后显而易见的,这位KOL上了钩,当我告诉他这是错的不要无脑转发的时候,他信誓旦旦告诉我这是索尼官网的图片,再然后,他不出意外的删掉了这条微博。

我把厂商分为三种

1优化了或添加功能了

比如cm,魔趣是把系统优化了

emui.miui添加实用功能了

2没改过,直接用原生系统,在国内把谷歌一家子移除了,其他没改

3负优化,没事植入软件,还删不掉,逼人root,运存毁灭,耗电严重

个人非系统or软件工程师,看到这个问题没有任何答案对“优化”做注解,尤其是那个高票回答,说了一堆评测人的不是,却半点有关优化的具体内容都没有谈,还顺带吹嘘了一下自己知道某传言是假的,自己看穿、某KOL却没有看穿的故事,知乎的氛围当真是越来越好。

为示例,来谈一个手机摄像头对焦时的算法优化简例,虽然不是对系统优化做详解,但多少可以让题主了解“优化”是个什么样的概念。需要注意的是,以下图片和文字内容主要改编自数码多,原文链接附于本回答之后,若涉及侵权,请告知。

一般来说,绝大部分不可换镜头数码相机、微单、手机的摄像头都采用反差式对焦方案(至于为什么要对焦,那你要去学习一下基本的光学知识)。通常大部分摄影师会告诉你,相位差对焦(单反采用的主流对焦方式)的对焦速度会明显快于反差对焦。但随着反差对焦技术的发展,实际上高速反差对焦已经成为可能,而其中重要的一环就是对算法做“优化”。

要了解这种优化,首先要知道反差对焦的原理。这还是比较容易理解的,就是当手机摄像头或成像设备的图像传感器采集到一张影像以后,图像处理器对所得的这张影像做分析,对用户所选位置做对比度反差分析,如下图所示。



这张图是网上流传甚广用于讲解反差对焦原理的图片,对用户所选画面位置的不同像素做亮度和色彩值的比较,当发现反差达到最大时,即认为当前对焦成功。这个对焦方式成本比相位对焦更低(因为相位差对焦还涉及到采用专门的对焦传感器或对焦像素),也相对比较简单。



长期以来反差对焦之所以速度不如相位差对焦,也的确受限于很多因素,像是这种对焦方式比较考验图像传感器本身的刷新率——比如说图像传感器每秒刷新数百次,那么图像处理器每秒钟就能够接受到来自传感器的数百张所采影像,且做计算,这种情况下对焦效率自然能提升很多,只是市面上有此种水准的传感器实在还不多。

还有镜头本身的采样帧率,因为对焦过程实际就是对焦镜组(或镜片)在镜头中移动的过程,那么镜组的移动效率,包含对焦马达每秒能驱动对焦镜组移动的频率以及精确程度,也可以影像对焦效率。



上面所说的这些都属于硬件范畴内需要去着手处理的问题,还有一个影响反差式对焦效率的因素就是对焦算法。按照数码多的示例,上面这个拍摄鸭子的对焦过程历经8帧,最终完成合焦,反差对焦系统发现F5位置时合焦。但这个过程实际上是有优化余地的,比如说在F1的时候,系统发现此时的反差很低,就直接跳过F2,来到F3,并在步进到F6、F7的时候发现反差再度降低了,也就可以省略F8,那么整个对焦过程就省略了2帧,这样对焦效率理论上提升了25%——这就是算法表现出来的优势了。这是比较典型的对焦“优化”的一个示例,当然这是个简化后的模型,实际情况比这要复杂很多。

于是同样的镜头、同样的图像传感器,在不同的厂商手里可以表现出截然不同的成像素质,以及对焦表现,这里面的差别主要就体现在了ISP的算法上,如果优化得当,自然可以得到更好的成像表现,以及更出色的拍照体验,提升对焦效率就是其中一个组成部分。

以上内容主要精简了数码多的文章《

夏昆冈作品 - 快速反差对焦的秘密[Soomal?数码多]

》,有兴趣的同学可点击查看更具体的内容。

----------

需要说明的是,这篇回答只是为了表达“优化”是什么,以及可以做些什么,所做的一个表述,以示例的方式谈一谈什么是优化。和题主所问“Android底层优化”并不相关,我也没有能力回答Android底层优化的问题,虽然对此稍有了解。这里抛砖引玉,待高手对这一问题做解答。

最后想说一句,要写一篇评测或文章,如果该文技术含量是半瓶水,那么作者本人起码要有一瓶水的本事。不是只有所谓的评测人在说优化,而是优化是确实存在的东西,也不要把评测人都想成一群头脑简单的人。

性能优化仿佛成了每个程序员开发的必经之路,要想出人头地,与众不同,你还真需要下点功夫去研究Android的性能优化,比如说,从优化应用启动、UI加载、再到内存、CPU、GPU、IO、还有耗电等等,当你展开一个方面做优化的时候,是不是也曾跟我一样,一头雾水,摸不着头脑,甚至找不到方法,然后看了大量的文章,最后记住了一些别人消化过的方式方法,就觉得自己学会了,其实我现在并不这么认为,我觉得性能优化肯定有一个固定的思维框架,让我们自发的去发现问题,然后解决问题,只有做到了自己发现,这样我们才能跟别人不一样,才能真正的掌握性能优化不是吗?下面就跟我一起看清楚性能优化的底层逻辑。

还记得这张图吗?记得当年初学android第一节课,老师就拿了这张图,甚至说,到目前为止,我才能更深刻的理解这张图,下面由我来重新介绍这张图,也许会给你带来不一样的视角。你有没有发现,其实整个Android系统只分为两大块,Linux + Android 虚拟机,其他的部分不都是运行在这个上面的产物吗?(当然有些人会说,虚拟机不也是运行在linux的产物吗?答:是的。)如果你没明白,请允许我画个图,你也许就能明白我说的。请看:

程序A、B都运行在虚拟机中,而Java需要跟Native交互需要用到JNI,JNI和C和C++进行互相调用。最终C与Linux内核进行交互。 通过上图,如果让你抓重点的话,其实就两大模块对吧,一个是linux,一个是Android虚拟机。回到优化,那是不是说我们只需要做好两件事,一个是优化linux,一个是优化虚拟机呢?但其实我想告诉你,性能优化最终其实就一件事,基于 Linux对Android的运行时优化,这就是我们找到的最基础的底层逻辑。

让我们基于Linux对Android运行时的优化,太抽象了,如果让你具体一点,你会想到什么?

先从硬件的角度出发,不管是Linux还是Android运行时,其实最终都牵扯到硬件资源的使用,那是不是说,如何做到硬件资源的合理运用,就是我们要做的呢?我觉得没错,首先你要知道硬件资源中最主要的资源是计算资源和存储资源

  • 计算资源主要是CPU、GPU,比如我们会考虑CPU占用率来作为优化的标准
  • 存储资源主要是虚拟内存和物理内存(磁盘),比如我们会考虑内存占用,磁盘占用等

简单说下如何利用好呢?

  • 比如现在的CPU都是多核的,能利用好多核计算,不是单核
  • 比如运行内存12G,那我们是不是可以考虑牺牲一些内存在提高性能呢?对的你是不是想说Google Chrome能占7、8个G内存?哈哈,因为Google比较喜欢拿空间资源换性能。

简单总结方法:

  • 合理利用CPU资源
  • 合理管理内存资源

至于再细化到如何做,这个就需要你自己去摸索了。

从软件角度出发,其实就是我们开发的应用软件,操作系统除了计算资源和内存资源的管理,其他都是通过IO来管理,那么软件的本质其实就是IO,进和出,没错,举几个例子:如我们的软件在系统中是一个个的进程,创建/销毁,在进程中有一个个的线程,创建/销毁,在线程中有一个个的对象,创建/销毁,在一个对象中有一个个方法,创建/销毁,在方法中有一个个成员变量和局部变量,创建/销毁。你现在是不是已经找到优化的方向了,总结如下:

  • 优化进程
  • 优化线程
  • 优化对象
  • 优化方法
  • 优化变量

这才是我们要找的底层逻辑不是吗?任何问题的解决,我想都该有一个合理的思维框架,这样才能事半功倍,有迹可循。

提到软件相关的性能优化知识点,这正好有份之前字节的朋友给我整理的《Android 性能优化》的核心笔录,看了一下还是不错的,大家也可以参考学习下:qr18.cn/FVlo89

Android 性能调优学习手册


友情链接: 万向 万向 富联 富联 高德
Copyright © 2002-2022 万向-万向注册水务调度系统 版权所有 Powered by EyouCms 

平台注册入口