反渗透阻垢剂厂家
免费服务热线

Free service

hotline

010-00000000
反渗透阻垢剂厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

比较Android编程语言NDK和RenderScript

发布时间:2021-01-20 18:01:58 阅读: 来源:反渗透阻垢剂厂家

尽管效率已有提升,但通过正确编写代码促使Android应用能够流畅且反应灵敏地运行,还存在提升空间。有些应用可以在Android的Java VM界线(注:也就是Dalvik VM)外运行代码。

Android平台提供了两种在传统Android应用界线外运行的方法。最被广泛使用的方式是使用Native Development Kit(注:下文简称“NDK”)。还有种方法是使用RenderScript(注:下文简称“RS”),这是种低层次高表现的编程语言。这两种方法均可用于3D播放和CPU密集计算。

在这篇文章中,我们将对NDK和RS两者进行比较,帮助你找出使用这两者方法的最佳时机。

Android NDK from

NDK VS RS:编程语言和轻便性

NDK允许开发者用C或C++来编写代码,通过Java Native Interface(游戏邦注:下文简称“JNI”)机制与他们的Android应用接合。这里的存储库是标准模式,既有C/C++的移植通常伴随着些许调整。而且,C++与Java的差别并不大,许多开发者对这两种语言都很精通。

RS采用的方法有所不同,其运用带有新API的C99句法(注:标准C源于1999年,当前标准是C11,出现于2011年),而新API最终会被编译至本地代码中。虽然这个句法为人所熟知,但是由于API的使用范围不广,所以开发者需要经过一段时间的学习才能够运用这个系统。

就轻便性而言,要点在于拥有能够适用于最多设备和平台的存储库。NDK可以利用你或许已经用在其他平台上的现有C/C++库。RS与其他C应用相比轻便性略差,但是比起NDK来它适用于更多Android设备。比如,RS能够在Google TV上运行,而目前Google TV平台上还无法使用NDK。

RenderScript from

NDK VS RS:编译和调试

用NDK编写的代码必须事先针对每个目标本地平台进行编译。如果应用发布平台包含不被支持的架构,那么应用的NDK端口就无法恰当地发挥作用。RS会先在你的开发机器上进行编译,接着是在目标设备,带来更高效的本地二进制代码。这意味着,任何支持RS的设备都能够运行你的代码,无论采用何种架构。

目前,RS形成的代码只会在主CPU上运行,在目标设备上运行时能够自动生成能够发挥多核特点的代码。但未来RS有可能也会在GPU上运行。这类似于CUDA或OpenCL平台。

运用NDK的应用可以通过gdb进行在线调试。但是,RS无法在运行时调试。从RS的本质及其利用多核的方式来看,这一点是可以预料到的,但这仍使得寻找和消除漏洞变得更为困难。

NDK VS RS:性能

就性能方面而言,NDK和RS两者都未提供绝妙方案。这两者都会增加项目的复杂性,减小便利性,增加测试需求,使调试变得更麻烦,以及增加项目的维护负担。如果你的项目不需要进行大量的计算,只利用OpenGL最基本的图像能力或者已经能够快速地运转,那么NDK或RS都不太可能会让你的项目获益。

如果针对单纯的计算用途,RS的设置和配置较为简单,所产生的结果或许能够胜过使用NDK。RS最适合用于3D用户界面或高性能的计算任务。而NDK则更适合需要访问更多图像SDK功能或访问第三方存储库的高性能OpenGL应用或游戏。

未在Java中与CPU绑定的简单OpenGL任务或计算最好单独处理。设备性能提升的总是Java编译器和Dalvik VM。将代码保留在Java中可以让你的应用利用这些提升的性能,实现在未来SDK版本或设备中进行更好的运转。

随着最终编译步骤的改善及更多硬件设备支持和计算支持被添加至GPU,RS代码将来或许会有所改善。但是,通过NDK执行的本地代码不太可能获得性能上的提升。因此,NDK代码的最大优势在于高效的运算法则和译码。

结论

运用NDK、RS还是停留在Java区域中,最终的选择权完全在开发者手中。这是个能产生很大影响的应用设计选择,它会影响我们使用的编程语言、应用运行的目标设备及项目维护的复杂性。

你已经看过上述有关NDK和RS的优势和劣势。它们可以进行互换,在某些情况下,两种技术都能够成为开发者的设计解决方案。深入把握NDK和RS能够帮助你进行更为恰当的选择。这两种技术都是能够帮助你提升应用在设备上的运行速度的可用工具。

画江湖盟主手游

萌宠大作战破解版

魔心大陆

双倍传奇最新版