Java运算符性能算法与按位
在性能非常重要的重复算术运算中,按位运算符对性能有正面影响还是负面影响?我试着用谷歌搜索,但没有得到一个明确的答案 例如,我应该使用以下内容:Java运算符性能算法与按位,java,performance,operators,Java,Performance,Operators,在性能非常重要的重复算术运算中,按位运算符对性能有正面影响还是负面影响?我试着用谷歌搜索,但没有得到一个明确的答案 例如,我应该使用以下内容: int s = 15 << 4; 以提高我的应用程序的性能 是否也与性能相关?在这种情况下,您可以使用其中一种 两者都是编译时可计算的常量表达式,因此编译器将执行该操作。因此,运行时将不会受到任何影响 如果您设计了一个仅在运行时可计算的示例,那么就很难说了,但如果我是您,我无论如何都会信任编译器。始终为您的任务使用合适的操作符,以免bug侵
int s = 15 << 4;
以提高我的应用程序的性能
是否也与性能相关?在这种情况下,您可以使用其中一种 两者都是编译时可计算的常量表达式,因此编译器将执行该操作。因此,运行时将不会受到任何影响
如果您设计了一个仅在运行时可计算的示例,那么就很难说了,但如果我是您,我无论如何都会信任编译器。始终为您的任务使用合适的操作符,以免bug侵入。您始终可以分析性能。即使这些操作不是(例如
n此代码)
public class A {
public static void main(String[] args) {
int a = 15 << 4;
int b = 15 * 16;
}
}
你根本不应该尝试微优化。请不要否决写得好的问题。最好的版本应该是int s=240;
:P(但编译器无论如何都会写).@为了回答这个问题,这只是一个简单的例子,我使用的是一个非常复杂的方程,它使用了多个位运算符。@Tom:也许不是。有些情况下,如果你“分解”一个常量,你的代码更容易阅读。例如,seconds\u in\u day=24*60*60
(这里没有什么关系,因为我们在java标签中,但是你必须非常小心C++中的左移,特别是带签名的类型。)
public class A {
public static void main(String[] args) {
int a = 15 << 4;
int b = 15 * 16;
}
}
public static void main(java.lang.String[]);
Code:
0: sipush 240
3: istore_1
4: sipush 240
7: istore_2
8: return