17

我目前正在写一篇关于Android平台的论文。经过一番研究,很明显Dalvik还有改进的空间。我想知道,您认为将开发人员的时间用于实现这一目标的最佳方式是什么?

JIT 编译似乎是一个大问题,但我也听说这在如此低资源的机器上使用有限。有没有人有资源或数据支持这一点?

是否还有其他选择需要考虑?除了开发一个强大的原生开发工具包来绕过虚拟机。

对于那些感兴趣的人,有一个关于Dalvik VM的讲座已经录制并在线发布。

欢迎任何想法,因为这个问题看起来很主观,我会澄清我将接受的答案必须有一些对提议的更改的理由。任何支持它的数据,例如 Sun JVM 在引入时的改进,都将是一个巨大的优势。

4

3 回答 3

18
  1. 更好的垃​​圾收集:至少压缩(以消除今天遇到的内存碎片问题),理想情况下在收集本身时减少 CPU 密集度(以减少“我的游戏帧速率糟糕”的抱怨)
  2. JIT,正如你所引用的
  3. 足够多的文档,当与 NDK 结合使用时,足够疯狂的人可以将 Dalvik 字节码编译为本机代码以用于 AOT 编译选项
  4. 使其与 Android 本身分离,以便其他项目可以对其进行试验,并且社区贡献可能会以更多的速度和更快的速度到达

我敢肯定,如果您需要,我可以提出其他想法。

于 2009-06-21T17:39:18.343 回答
3
  1. 即时通讯。关于它没有帮助的东西是一堆废话。您可能对 JIT 的代码更具选择性,但只有本地代码性能的 1/10 总是会受到限制

  2. 体面的GC。现代世代垃圾收集器没有大口吃。

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

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

于 2009-06-24T19:14:55.943 回答
0

Dalvik 的主要问题之一是性能,我听说这很糟糕,但我最想要的一件事是添加更多语言。

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

于 2009-06-21T09:24:06.217 回答