Wan*_*eck 6 java optimization performance programming-languages scala
我刚刚阅读了关于scala实现泛型专业化的内容,它确实引起了我的注意,他们通过这个功能提高了速度.我想知道其他功能有哪些语言针对java vm实现,实际上使它们比java更好?我知道生成的代码越远离java,其性能就越低.所以我真的很想知道语言可以实现哪些其他功能来实现更好的java性能.
请不要回答这个问题,谈论scala在java之上的非常好的功能,我正在严格谈论性能.
如果您的建议仍未实施,请回答!
谢谢!
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"模式将不会那么受欢迎.