我目前正在写一篇关于Android平台的论文。经过一些 研究, ,很明显Dalvik还有改进的空间。我想知道,您认为开发人员如何最好地利用时间来实现这一目标?

JIT 编译看起来很重要,但我也听说这在资源如此匮乏的机器上用途有限。有人有支持这一点的资源或数据吗?

还有其他应该考虑的选择吗?除了开发一个强大的本机开发套件来绕过虚拟机。

对于那些有兴趣的人,有一个已录制并放在网上的讲座,内容涉及 达尔维克虚拟机.

欢迎任何想法,就像这个问题一样 显得主观 我将澄清,我接受的答案必须对提议的更改有一定的理由。任何支持它的数据,例如 Sun JVM 推出时的改进,都将是一个巨大的优势。

有帮助吗?

解决方案

  1. 更好的垃圾收集:至少压缩(以消除当前遇到的内存碎片问题),理想情况下,在进行收集时自己的CPU密集程度较低(以减少“我的游戏帧率吮吸”投诉)
  2. JIT,正如你引用
  3. 有足够的文档,当与NDK结合使用时,有足够疯狂的人可以将Dalvik字节码编译为AOT编译选项的本机代码
  4. 让它与Android本身分离,以便其他项目可以尝试使用它,社区贡献可能会以更大的数量和更快的速度获取
  5. 我确信如果你需要,我可以提出其他想法。

其他提示

  1. 即时生产。关于它没有帮助的东西都是一堆废话。您可能会对 JIT 的代码更有选择性,但本机代码性能的 1/10 始终会受到限制

  2. 不错的GC。现代一代的垃圾收集器没有大的口吃。

  3. 更好的代码分析。在很多情况下,不需要进行分配/释放、不需要持有锁等等。它允许您编写干净的代码,而不是进行机器更擅长的优化

理论上,大多数情况下,大多数高级语言(Java、Javascript、python...)应该在本机代码性能的 20% 以内。但这需要平台供应商花费 100 多个开发人员年。Sun Java 正在变得越来越好。他们也为此努力了10年。

Dalvik的一个主要问题是性能,这听起来很糟糕,但我最喜欢的一件事就是添加更多语言。

JVM已经有社区项目在平台上运行Python和Ruby,甚至为它开发了Scala,Groovy和Closure等特殊语言。很高兴在Dalvik平台上看到这些(和/或其他)。 Sun也一直致力于Da Vinci机器,这是JVM的动态类型扩展,它表明了与“一种语言适合所有人”的重大转变。哲学Sun在过去的15年中一直追随。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top