|
|
1
10
第一:这不是“内联”的意思。请参见: What is inlining? 第二:不,绩效不会有任何可衡量的差异。在这两个代码示例中,两个版本的编译代码很可能相同。 |
|
|
2
5
我定义了两个简单的类
和
令我惊讶的是,.class文件的大小不同。
也许我不应该感到惊讶,因为一些符号信息与代码一起存储。我通过在线反编译器运行了.class文件。
编译器的优化清楚地显示在这里。也许在Java中对于非紧凑代码有一个小的惩罚。 |
|
|
3
3
他们都一样。前者比后者更清楚。 在某些情况下,如下面的块,单行程序很有用。
如果你想让它更容易阅读,尤其是当涉及到方程时
这是我个人的看法。 |
|
|
4
2
虽然局部变量能够在字节码的转换中生存,但它们不太可能在实时编译中生存。此外,即使存在局部变量,它们也不会显著影响该方法的性能,因为重新缩放位图比存储或检索局部变量要贵几个数量级。 关于字符串连接的第二个示例强调了此规则的一个小例外,因为局部变量的存在可能会抑制对常量字符串连接的编译时求值。然而,这不太可能对程序的运行时间产生重大影响,因为您可能不会经常连接常量字符串。 一般来说,内联局部变量对运行时性能的影响很难测量,更不用说显著了。因此,通过使代码易于阅读和推理,您的时间可以更好地优化程序员的性能。 |