GMTC北京站9折购票倒计时,部分日程已上线,戳此查看 了解详情
写点什么

采访:Linaro 对 Android ICS 的性能改进

  • 2012 年 7 月 15 日
  • 本文字数:1863 字

    阅读完需:约 6 分钟

Linaro 大幅改进了 AOSP 标准版 Android 4.0.4 的性能表现,在不同类型的基准测试中成绩提高了 20-30% 到 500%。进步最大的方面归因于对libc库中字符串操作的优化,而且他们用了跟 Google 不一样的编译器和编译参数来生成 Androud 程序。Linaro 在香港举办他们的 Linaro Connect Q2.12 会议,会上演示了他们的Android 版本和标准版本的对比,演示在一台配备TI OMAP4430 芯片的Pandaboard 设备上进行。选择该特定设备是因为它刚好两个版本都支持,测试并不难在其他设备上重现。基准测试的结果是标准Android 跑到30 FPS 的3D 图形测试,Linaro Android 能跑到60 FPS。

InfoQ 对 Linaro 从事 Android 开发工作的工程师 Bernhard Rosenkränzer 进行了采访,请他说明他们对 Android 的改进工作。

InfoQ:我们说的是多大程度的性能改进?能给个数字吗?

BR:还是那句话,看你要做什么事情。如果是手写的汇编代码,根本不调用共享库的,显然不会有多少性能提升,反过来,当测试场景严重依赖于memchr()strlen()的时候,让 Linaro 版比标准版 Android 快个五倍一点都不难。以显示的应用来说,估计速度提升 20%-30% 比较合理。

InfoQ:我看到有的测试标准版 Android 跑到 30 FPS 的,Linaro 能跑到 60 FPS。是什么测试有这种成绩?

BR: 那个是 0xbench 的 3D 部分,测试环境是 Pandaboard 配 720p 的屏幕。这个测试还不算成绩最好的,只不过它除了测试的成绩漂亮,画面也很漂亮。考虑到观众里面有不少非技术背景的,我们不能只拿出干巴巴的结果数据。

InfoQ:你们具体做了哪些改进?

BR:有好几个方面。按实际改动的代码量来算的话,Bionic(即 Android 的 libc)是改得最多的。我们把其中的多数核心字符串处理函数替换为针对 ARMv7 CPU 家族优化的版本, 尤其针对 Cortex A9 做了优化。

我们用 Linaro 的工具链(基于 gcc 4.7)重新生成了整个系统,编译参数也一样。(标准版 Android 的构建系统看上去并没有规划对不同设备设置不同编译参数,也就是说没有用上 -mcpu=、-mtune= 这些参数。)Android 默认加了 -fno-strict-aliasing 参数(对于优化结果是否正确由代码是否遵循 C/C++ 别名规则决定的情况,关闭优化)——我们选择去掉这个参数,同时修正 Android 代码树中所有违反 aliasing 规则的地方。(有几个子目录我们认为改起来太费劲,不值得,所以在不连累 OS 其他部分的前提下,单独针对几个目录保留了 -fno-strict-aliasing 参数。)

我们还更新了内核,同时微调了一些设置。其实内核还有一些优化的空间,例如我们的内核还保留了完整的调试支持、性能计数器等等。这些功能都是有性能代价的,如果不是像我们这样做开发平台的,显然应该关闭这些功能去追求运行速度。

还有一件事情需要特别声明:我们没有修改任何驱动。(有人怀疑 FPS 提升是因为我们在驱动里面关了 vsync。)我们的成绩并不依赖于特别的硬件平台,演示中用了 Pandaboard 只是因为它是仅有的同时支持 AOSP 标准版和 Linaro 版 Android 的现成平台,用不同硬件的话没法直接比较。Linaro Android 在其他板子上有同样优秀的表现,,比如 Origen、Snowball 和 iMX6。

InfoQ:这些改进会整合回标准版 Android 吗?

BR:我们打算进一步测试之后提交给 AOSP。至于会不会被接纳到下一版的 Android 并不由我们决定。有些 Android 修改版制作者(如 CyanogenMod)已经在着手整合我们的修改。

InfoQ:Linaro 的改进会不会只在成员企业的小圈子里使用?

BR:这件事也不由我们决定。我们把代码准备好了,用不用是他们的事。

InfoQ:Google 对这件事情有什么回应吗?

BR:有一位 Google 工程师在相关 Google Plus 帖子上给了个“+1”,除此之外,没有。

InfoQ:你跟 Google 其实有合作吗?

BR:有的,我们曾经提交过一些补丁让 Android 能在 gcc 4.6 和 gcc 4.7 上编译。有些被接纳了,有些被忽略掉,因为他们已经在内部的树上用别的方法修正了问题。

InfoQ:Linaro 有没有别的 Android 相关项目正在进行中?

BR:我们每个月都为成员企业的开发板发布 Android 版本(且每天发布快照版本),放在 https://android-build.linaro.org/ ,一般已经整合了我们所有的新改进。

除了一般性的性能优化,我们还会做平台整合(集成驱动之类),以及移植开发工具。例如 Linaro Android 包括 busybox、perf、lrzsz 和 gator(执行 ARM 的 DS-5 图形化调试 / 性能测量工具需要)。

编辑提示:Linaro 是 ARM、Freescale、IBM、Samsung、Ericsson 和 TI 共同组建的非营利组织,它的任务是巩固和优化 ARM 平台上的开源软件。

查看英文原文: Interview: Improving the Performance of Android ICS

2012 年 7 月 15 日 03:192855
用户头像

发布了 225 篇内容, 共 52.6 次阅读, 收获喜欢 40 次。

关注

评论

发布
暂无评论
发现更多内容

前端面试常考题:JS垃圾回收机制

华为云开发者社区

JavaScript Vue 大前端 js 垃圾回收

Mybatis【20】-- Mybatis延迟加载怎么处理?

秦怀杂货店

数据库 缓存 mybatis 加载

上天的源码要不要——GitHub 热点速览 v.21.08

HelloGitHub

Python GitHub 开源 Go 语言

“云原生”的应用价值及关键属性解读

浪潮云

透彻解析!如何快速的开发一个完整的直播app,薪资翻倍

欢喜学安卓

android 程序员 面试 移动开发

诊所数字化:最大的数据资产-患者数字档案内容

boshi

电子病历 数字化医疗 七日更 28天写作

MYSQL 索引篇(下)

new life

MySQL MySQL性能优化 多字段联合验证 索引性能

压力太大的话,就放点气儿吧

道伟

28天写作

基于matlab的控制系统与仿真2-传递函数模型

AXYZdong

matlab 2月春节不断更

西北大学研发猴脸识别技术,金丝猴可刷脸打卡;IJCAI 2020丨基于学习实例隐空间的文本风格转换

京东科技开发者

人脸识别 IT 量子通讯

关于GaussDB(DWS)的正则表达式知多少?人人都能看得懂的详解来了!

华为云开发者社区

正则表达式 GaussDB

Fast AI人工智能审图平台-建筑图纸设计效率的倍增器

AI AI审图

透彻解析!在字节跳动我是如何当面试官的,讲的明明白白!

欢喜学安卓

android 程序员 面试 移动开发

go get下载包失败问题

happlyfox

28天写作 2月春节不断更 Go 语言

从磁盘读取成本分析两种 100% 遍历思路:按格子遍历 & 按线遍历

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

Java lambda表达式人类使用指南

ES_her0

28天写作

解决dyld: Library not loaded icu4c

一个大红包

brew icu4c

产品经理训练营第四周总结

产品经理训练营

Mybatis【19】-- Mybatis自关联多对多查询

秦怀杂货店

这些面试题你会吗?连续四年百度Android岗必问面试题!深度好文

欢喜学安卓

android 程序员 面试 移动开发

工业互联网助力数字中国建设(新论)

浪潮云

工业互联网

话题讨论 | 技术人员的职业发展困惑,你也有么?

架构精进之路

职业规划 话题讨论 28天写作 技术人员

什么容易被记住——造梦师指南

Justin

心理学 28天写作 游戏设计

Kafka.05 - 生产者与消费者介绍

insight

kafak 2月春节不断更

如何解决深度推荐系统中的Embedding冷启动问题?

王喆

机器学习 深度学习 推荐系统 计算广告 Embedding

【进阶】面试官问我Chrome浏览器的渲染原理(6000字长文)

我是哪吒

学习 程序员 chorme 28天写作 2月春节不断更

线程池面试必考

叫练

面试 线程池 线程池工作原理

CL的配置中心知识整理

白鹿猫余

微服务 技术选型 配置中心 配置管理

(28DW-S8-Day3) 比特币、 区块链是什么?

mtfelix

比特币 区块链 28天写作

我在极客时间录课的故事(四):学习产生惰性是一种正常现象

《微信小程序全栈开发实战》专栏讲师

我在极客时间录课的故事

Selenium 常用方法与属性、鼠标悬停与 Select 操作

梦想橡皮擦

Python 28天写作 2月春节不断更

采访:Linaro对Android ICS的性能改进_移动_Abel Avram_InfoQ精选文章