最好的(scala和其他针对java vm的语言)优化

Wan*_*eck 6 java optimization performance programming-languages scala

我刚刚阅读了关于scala实现泛型专业化的内容,它确实引起了我的注意,他们通过这个功能提高了速度.我想知道其他功能有哪些语言针对java vm实现,实际上使它们比java更好?我知道生成的代码越远离java,其性能就越低.所以我真的很想知道语言可以实现哪些其他功能来实现更好的java性能.

请不要回答这个问题,谈论scala在java之上的非常好的功能,我正在严格谈论性能.

如果您的建议仍未实施,请回答!

谢谢!

Von*_*onC 13

Scala确实支持尾调用优化,而Java仅通过JVM 尚未完全支持.


soc*_*soc 5

Scala优化了类似的东西

val nullSafeToString = "" + foo
Run Code Online (Sandbox Code Playgroud)

val nullSafeToString = String.valueOf(foo)
Run Code Online (Sandbox Code Playgroud)

Java没有,在Java中它看起来像

val nullSafeToString = new StringBuilder("").append(foo)
Run Code Online (Sandbox Code Playgroud)

它比Scala更简单的代码需要4倍的字节码,并创建一个新的StringBuilder实例和无用的String.

一方面,JVM用于支持他们计划在Java中使用的东西,即使JVM只执行字节码.

为了更好地支持功能(尾调用)和无类型语言(InvokeDynamic),有许多功能可以长时间丢失.

但另一方面,我很惊讶JIT编译器可以轻松地优化大量抽象代码和间接层,最终代码执行速度与Java代码一样快.

我认为如果JVM无法通过转义分析删除这些简单implicit+ class RichFoo模式的实例创建,那么"Pimp My Library"模式将不会那么受欢迎.