我瞎搞 一个玩具的解释Java 我正在考虑试图编写一个简单的编译器,可以产生码Java虚拟机。这让我思考,如何更优化需要通过编译器目标的虚拟机如JVM和CLI?

做到及时(JIT)编译器做不断的折叠,窥视孔优化,等等?

有帮助吗?

解决方案

我只是要增加两个链接,其中解释 Java码 很好一些 各种优化 JVM期间,运行时间。

其他提示

优化码可能是一种矛盾的说法在大多数情况下

我不认为那是真实的。优化等提升环不变和传播的常数永远不能伤害,即使JVM是能够做到它们对其自身,通过简单的美德使得码做更少的工作。

优化使Jvm可行的作为环境对于长期运行的应用程序的,你可以打赌那个太阳,IBM和朋友们正在尽最大努力确保他们可以优化码和JIT编码在一个高效率的方式成为可能。

与这就是说,如果你认为你可以预先计划码然后它大概不会做多大的危害。

这是值得注意的是,Jvm可能倾向于更好地执行(并不崩溃)时提出只是字节Java编译器的倾向结构。它不是未知的,对优化可错过的或甚至为JVM崩溃时的排列的字节发生的,是正确的但不像什么会产生的javac.希望这样的事情是更多过去了,但是可以的东西是知道的。

Obfuscators如ProGuard将执行许多静优化上你的码给你的。

热点编译器将优化码在运行时好比是可能的,在编译时间-它有更多的信息的工作,之后。只有时间你应该优化码,而不是只是你的算法是,当你正移动设备,例如黑莓,其中JVM为该平台是不是足够强大,以优化码在运行,只是执行码。

优化码可能是一个矛盾,在大多数情况下。除非你控制的虚拟机,你不知道它做什么来加快执行代码,如果任何东西。编译器将需要知道详细的VM为了产生最优化的代码。

注意到Aseraphim:

它也可以有助于优化特码为非嵌入式应用程序在一些有限的情况下:

  1. 当提供码在线,例如用于WebStart应用程序,以尽量减少交付/高速缓存的大小以及因为你不需要知道能力/快速的客户。

  2. 代码,你知道是关键性能和使用在启动前(说)的热点有时间收集的任何统计数据。

再转换,一个良好的优化工具/混淆执行可能是非常有用的。

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