您的位置:首页 > 移动开发 > Android开发

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

2014-05-07 16:57 99 查看
    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参数。)

    我们还更新了内核,同时微调了一些设置。其实内核还有一些优化的空间,例如我们的内核还保留了完整的调试支持、性能计数器等等。这些功能都是有性能代价的,如果不是像我们这样做开发平台的,显然应该关闭这些功能去追求运行速度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: