首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dalvik对原生c++代码性能的影响?

Dalvik对原生c++代码性能的影响?
EN

Stack Overflow用户
提问于 2012-02-11 01:10:39
回答 1查看 1.3K关注 0票数 2

我计划使用Necessitas将Qt代码移植到Android平台。乍一看,我注意到尽管是本机代码,但所有东西仍然通过Dalvik VM。

我的问题是,这会带来开销吗?一开始,Java的效率低于原生c++,而Dalvik与vanilla Java相比则相当不成熟,这就是我担心的原因。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-11 01:25:18

在Android文档中,您可以找到以下提示:

Java代码不一定比

更高效。首先,与Java到本机转换相关的成本很高,而且JIT不能跨越这些边界进行优化。如果您正在分配本机资源(本机堆上的内存、文件描述符或其他任何资源),那么安排这些资源的及时收集可能会更加困难。您还需要为您希望在其上运行的每个体系结构编译代码(而不是依赖于拥有JIT)。你甚至可能不得不为你认为相同的架构编译多个版本:在G1中为ARM处理器编译的本机代码不能充分利用Nexus One中的ARM,并且在Nexus One中为ARM编译的代码不能在G1中的ARM上运行。

粗略的Dalvik代码比为该平台优化的纯C/C++慢。但是本机代码和Java代码之间的通信是通过JNI进行的,这是开销的主要来源。

所以你的问题的答案是肯定的,JNI引入了额外的开销。但是如果你想移植现有的C/C++代码,ndk是最好的选择。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9231821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档