Google 谷歌 Pixel XL 智能手机
Google 谷歌 Nexus 6P 智能手机
上个月,谷歌提供了Android O的第一个开发者预览版的系统镜像下载, 虽然它对应的正式版系统Android 8要在今年第三季度才会正式发布,但未来新系统的许多重要变化,将会在开发者预览系统中进行体验和测试。由于是早期开发者固件,稳定性尚未达到Beta级别,谷歌并未向申请了系统测试的用户推送更新。目前支持Android O的机型有Pixel C、Pixel、Pixel XL和Nexus 5X、Nexus 6P等,由于Pixel XL正用于拍摄样张,因此我们在Nexus 6P上手动下载安装了Android O系统用于体验。
Google 谷歌 Nexus 6P智能手机 - Android O开发者预览版 - 系统桌面
Google 谷歌 Nexus 6P智能手机 - Android O开发者预览版 - 系统信息
在界面上,由于的原生Android机型会保持独立的风格,因此界面风格并不是统一的,即使Nexus 6P在更新后,桌面和应用抽屉风格和原来一致,并没有向Pixel XL的界面样式靠拢。和去年的Android N和前年的Android M对比,Android O在“开发预览”的部分增加了相当多的新功能,虽然许多功能看起来和手机的应用无关,但还是和用户日常使用体验密切挂钩的。其中就包括了Skia功能的开放。4年前,我们在一篇技术分析文章的翻译中介绍并测试了Skia和Skia GPU加速的性能表现,不过近年来Soomal的新增了大量围观群众和读者,这部分对许多人来说或许是全新的内容,所以首先还是来回顾一下Skia和过去Android GPU加速的小知识。
Skia介绍
Skia是一个2D图形显示引擎,使用C 编写,在2005年被谷歌收购,目前是Chrome OS、Chrome浏览器Firefox和Android的图形渲染核心,并以BSD协议开放源码。不过目前稳定的Android系统并未使用完整的Skia API进行2D图形的渲染,许多图形处理仍通过OpenGL向帧缓冲输出进行显示。不过开发者和系统爱好者可以自行下载Skia的源代码编译强制替换成为Android默认的2D显示引擎。
- Skia GPU加速能使Android系统的Webkit渲染获得多少收益? [来自Soomal]
从Android 3.0开始,谷歌在开发者选项中提供了一个GPU硬件加速功能,但此功能一直处于测试状态,表现并不稳定。但这个功能可以很好地测试GPU硬件加速对Android性能的影响。在当时,Skia GPU加速实测表现还远不如直接使用CPU进行图形处理。与之相对的是,即使如英特尔BayTrail Atom这样CPU性能较弱的X86处理器,借助Windows 8/10优秀的GPU硬件加速效率和图形处理能力也能获得流畅的系统使用体验。
当然这样的表现对比并不会让人意外,毕竟从Linux演变而来的Android继承了Linux在图形性能上的缺点[超算电影CG渲染那种堆节点的暴力应用案例不算],不过随着OpenGL自身的进步,以及性能效率媲美DirectX 12的Vulkan API发布,Android的3D图形性能上的表现是在逐步改善的。另外各个ARM处理器厂商针对Android的图形系统特点进行硬件级的优化,已经做得比较成熟。甚至还有NVIDIA的Tegra处理器依靠强大全面的GPU纹理压缩功能对2D和Web界面进行优化传输,以达到实质上的GPU加速效果。
然而随着屏幕分辨率的大幅度提高,单纯依靠CPU优化的方案在高分辨率显示下已经力不从心,也越来越耗电。虽然大多数网络APP本质就是网页浏览器套个应用外壳[一般被称为WebView,对比淘宝的手机浏览器版和手机APP的差别便知],在微信支付宝脸书等日渐复杂和越发变态的网络应用面前,2000元价位的主流性能手机已经不大可能只依靠CPU优化和内存硬吃等简单粗暴的手段改善应用体验了。
Google 谷歌 Nexus 6P智能手机 - Android O下的渲染器切换
在Android O开发预览版中,谷歌开放了完整的Skia系统渲染功能,并且可以在开发者选项中进行切换,对于Android开发者用户来说省去了下载源码编译和安装集成的步骤。可以方便地比较Skia和Skia GPU加速的性能表现区别。
Skia GPU性能测试
在截下来的理论性能测试中我们主要测试Android O的默认渲染器、Skia和Skia GPU加速的性能表现差异。测试主要使用browserbench的HTML/javascript测试和Vellamo的浏览器测试部分。由于手机系统重启后渲染器的选项会重置,因此每次测试后只能通过清理进程和加强散热的方式确保系统运行的状态。
Google 谷歌 Nexus 6P智能手机 - Skia GPU测试 - MotionMark[Skia]
Google 谷歌 Nexus 6P智能手机 - Skia GPU测试 - MotionMark[Skia GPU]
Google 谷歌 Nexus 6P智能手机 - Skia GPU测试 - MotionMark
MotionMark主要测试的是网页的图片、矢量图形和动画效果的显示性能,Skia GPU还是比CPU渲染稍慢一些,但差距很小。
Google 谷歌 Nexus 6P智能手机 - Skia GPU测试 - JetStream
Google 谷歌 Nexus 6P智能手机 - Skia GPU测试 - JetStream[Skia]
Google 谷歌 Nexus 6P智能手机 - Skia GPU测试 - JetStream[Skia GPU]
JetStream是用于测试模拟运行复杂Javascript脚本时浏览器的性能表现。使用Skia GPU时,JetStream的Javascript性能提高了10%,看起来不多。不过在PC上同样电脑配置下[i7 6700 GTX1080]微软的Edge浏览器也只比Chrome快10%而已,而且脚本加载、加密和页面的读取速度等几个单项有明显提升,说明GPU加速对复杂Javascript的部分运算还是有明显影响的。
Google 谷歌 Nexus 6P智能手机 - Skia GPU测试 - Vellamo[Skia]
Google 谷歌 Nexus 6P智能手机 - Skia GPU测试 - Vellamo[Skia GPU]
Google 谷歌 Nexus 6P智能手机 - Skia GPU测试 - Vellamo[Skia]
Google 谷歌 Nexus 6P智能手机 - Skia GPU测试 - Vellamo[Skia GPU]
Google 谷歌 Nexus 6P智能手机 - Skia GPU测试 - Vellamo浏览器测试
Vellamo得出的整体成绩是Skia比Skia GPU好一些,可以视为区别不大,在骁龙820处理器平台上测试的对比效果应该更好,因为Nexus 6P的骁龙810容易出现过热降频的问题,无法连续长时间运行测试。
总结和展望
目前以Android O为基础应用还无法进入Google Play市场,至于一些主要的国内网络应用,能在测试系统上正常运行的还较少。而Nexus 6P本身网页浏览表现就不好,在使用Skia GPU加速时,动画和划动页面效果还是要比默认的渲染器明显更慢,除了处理器的性能和运行稳定性成为了瓶颈,Skia GPU本身还是存在一些问题。
和四年前相比,通过开源和不断的开发完善,Skia确实有了长足的进步,这也是它成为多款浏览器和操作系统的默认图形渲染器的原因。而Skia GPU加速虽然在图形显示效果上并没有比CPU渲染更好[听起来很奇怪?],但是和过去的“负优化”相比,Skia GPU起码已经处于可用状态,而且对于那些日渐变态的网络应用来说,Javascript的脚本运算同样占据了不少负载,Skia GPU加速确实可以改善复杂脚本、加密脚本的加载时间和触发延迟,也意味着耗电时间的减少,即使“看起来”那些网络应用并没有变得更流畅,但整体对于用户体验改进而言效果还是正面和积极的。
,