RenderScript的性能演进

自最后一次发表关于Renderscript的博客已有一年,随着Android4.2的发布,是时候讨论一下我们在性能优化方面所做的工作了。在这过去的一年内,Renderscript在进行常规图像处理的性能上有了显著的提升。

当 你着手开始优化时,首先要做的就是如何衡量性能。为此我们建立了一套图像处理的基准测试(benckmark suit).这套测试用来测量对一幅大约170万像素的图像进行给定的图像处理需要的时间。我们将包含这个基准测试的应用程序(apk)放在 Galaxy Nexus上运行,并对同样的程序在Android4.0上获得的测试时间进行了标准化,从而将两者进行比较。

从 ICS到Jelly Bean,我们所做的主要进步在于显著的降低了小脚本的开销以及元素分配的消耗。而从android4.1到android4.2,我们则是将大量的优化放 在数学函数库性能的提升上。我们的硬件合作伙伴也做出了很大的贡献:特别是ARM公司进行了大量的编译器的优化,这些优化极大的提升了我们产生矢量代码的 能力。

Android4.2引入了另一个更重要的变化:在移动平台上,我们第一次可以将GPU作为通用计算设备。如果这台设备是支持GPU运算的,那基准测试的apk就会跑在GPU上。图2里的图表也像图1一样进行了归一化的处理。

Nexus10 使用的CortexA15是一款非常棒的CPU。但这并不意味着我们可以让资源闲置。MaliT604(译者注:ARM公司推出的GPU)是一款非常灵活 强大的计算设备,可以执行大量的RenderScript的功能。图2里绿色的柱状图显示了Mail开启RenderScript计算所达到的效果。应用 开发者是不需要主动开启这个加速功能:设备可以自动监测每一个脚本,然后决定哪个处理器(CPU或者GPU)来运行这个脚本。需要着重强调的是某些脚本是 不能运行在GPU上,这些脚本会被自动运行在CPU上。

没有最好只有更好。优化的工作任重道远。随着我们对平台的不断优化,RenderScript将在应用程序中发挥更大的功能。

想知道更多关于RenderScript,可以参考Renderscript计算开发手册。

图1: 同在Galaxy Nexus设备上,RenderScript图像处理基准测试程序运行在不同Android版本(Android4.0 Android4.1 Android4.2)的CPU上的比较结果

图2: 同在Nexues 10 设备上,RenderScript图像处理基准测试程序运行在GPU+CPU和只运行在CPU上的比较结果

英文原文:Android Developers,翻译:ImportNew - 孙立

译文链接:http://www.importnew.com/2824.html

【如需转载,请在正文中标注并保留原文链接、译文链接和译者等信息,谢谢合作!】

 



相关文章

发表评论

Comment form

(*) 表示必填项

还没有评论。

跳到底部
返回顶部