代码之家  ›  专栏  ›  技术社区  ›  Dan

.NET运行时与Java热点之比较.NET是否落后一代?

  •  16
  • Dan  · 技术社区  · 14 年前

    根据我在.NET和Java执行环境中收集到的信息,目前情况如下:

    撇开基准测试不谈,也不打算升级圣战,这是否意味着JavaHotspot虚拟机比.Net早一代呢。JavaVM中使用的这些技术最终会进入.NET运行时吗?

    4 回复  |  直到 14 年前
        1
  •  8
  •   The Alchemist    14 年前

    我从未对两者进行过基准测试以进行比较,而且我更熟悉sunjvm,我只能笼统地谈论jit。

    优化总是有折衷的,并不是所有的优化都能一直工作。然而,这里有一些现代的JIT技术。我认为,如果我们坚持技术性的东西,这可能是一次良好对话的开始:

    对于VM的良好实现,还有一些功能非常有用:

    • 能够在GC和
    • 实现每个GC的定制
    • 页面锁定

    基于这些特性和更多的特性,我们可以比较vm,不仅仅是“Java”和“.NET”,还可以比较Sun的JVM和IBM的JVM和.NET以及Mono。

        2
  •  15
  •   gpeche    14 年前

    他们遵循两种不同的策略。我不认为一个比另一个好。

    • NET不解释字节码,因此它必须在执行时对所有内容进行JIT,因此由于时间限制,无法进行大量优化。如果您需要对代码的某些部分进行大量优化,您可以随时手动对其进行更新,或者执行快速但有效的更新 unsafe 实施。此外, calling native code is easy 这里的方法似乎是让运行时足够好,并手动优化瓶颈 .

    • unsafe 在Java中,以及 calling native code is not nice 因此,这里的方法是尽可能多地进行自动优化,因为其他选项并不太好 .

        3
  •  8
  •   Matthew Whited    14 年前

    Rotor . 我没有访问IEEE的权限,所以我无法阅读摘要。

    Dynamic recompilation and profile-guided optimisations for a .NET JIT compiler

    使用 一组测试程序显示 性能可以最大限度地提高 平均为42.3%和9%。 结果还表明,间接费用 信息通过仪表传递到 实施 ,表明需要 实现可以 减少此类开销。

        4
  •  3
  •   Community miroxlav    7 年前

    SPUR 这是一个跟踪JIT编译器。重点是javascript,但它在CIL上运行,而不是语言本身。这是一个基于Bartok的研究项目,而不是标准的.netvm。本文给出了一些性能指标 '它始终比SPUR-CLR执行得更快' here

    我不敢说.NETVM落后了一代,尤其是考虑到所有子系统,特别是泛型时。怎么了 GC DLR 与invokedynamic的比较我不确定,但是在一些地方有很多关于它们的细节 channel9 .