1
9
从我所看到的,scala编译器根本没有优化它。如果JVM能够确定结果不会改变,那么它可能会改变,但通常它没有好的方法来知道。
所以,一般来说,如果它是一个微不足道的计算,那么它不会有什么不同,这既因为它是微不足道的,也因为JVM可以发现它只需要做一次。如果它很复杂,速度很重要,你应该使用
请注意,有时放置VAL会感到很尴尬。有两种方法可以解决这个问题。首先,请注意,几乎任何内容都可以用大括号中的等价语句替换,因此异常可能比您想象的要少。此外,此方法在某些情况下可能有用:
|
2
5
scala编译器不会尝试通过调用函数或方法来优化任何函数或方法,除非您专门使用@inline注释(即使它不是gauranted)。也就是说,jvm和hotspot-jit编译器(尤其是编译器)几乎可以肯定地在您的示例中内联对“add”的调用,然后能够删除产生的公共子表达式。 像往常一样,在询问关于性能和编译器优化的问题时,如果没有广泛的专业基准,任何答案都不应该被视为福音。过去的表现不是未来回报的高调。货物在运输过程中可能会沉淀。如果四小时后肿胀仍然存在,请看医生。所有型号超过18。 |
3
5
如果没有效果系统,编译器就无法决定重用方法(或
在整个计算历史中,大多数语言都是如此,您必须从您的算法中删除冗余。 |
davidzxc574 · 将字符串缩放为字符 2 年前 |
yic_l · 什么是“!”在这个函数中是什么意思? 2 年前 |
Jelly · Scala:用于理解递归未来 2 年前 |
bbgghh · 在scala中连接两个列表时如何处理不匹配的键 2 年前 |
Iheb Mar · 卡夫卡制作人/消费者粉碎每一秒的API调用 2 年前 |
B. Bal · 在Scala中重用类成员 2 年前 |