java - 包含许多 “if” 的关键循环,其输出为常量 : How to save on condition tests ? 对于 Java ;)

标签 java optimization javac

我刚读了这个帖子 Critical loop containing many "if" whose output is constant : How to save on condition tests?

还有这个Constant embedded for loop condition optimization in C++ with gcc这正是我想用 Java 做的。

我有一些 if 条件被调用了很多次,这些条件由初始化时定义的属性组成,并且不会改变。

Javac 是否会通过删除条件中未使用的分支来优化字节码,从而避免花时间测试它们? 我必须将属性定义为 final 还是没有用?

谢谢你的帮助,

奥雷连

最佳答案

Java 编译时优化非常缺乏。如果您可以使用 switch 语句,它可能会做一些微不足道的优化。如果属性的数量非常大,那么 HashMap 将是您最好的选择。

最后我要说的是,这种事情很少成为瓶颈,过早地对其进行优化会适得其反。如果您的代码实际上被调用了很多,那么 JIT 优化器将尽最大努力使您的代码运行得更快。只需说出您想要发生的事情,当您发现确实值得花时间对其进行优化时,只需担心“如何”发生。

关于java - 包含许多 “if” 的关键循环,其输出为常量 : How to save on condition tests ? 对于 Java ;),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5553561/

相关文章:

java - 调用@Stateless bean 的@Asynchronous 方法时出现ContextNotActiveException

MySQL 关于排序大小和效率

java - 为什么 Javac 不在多核上运行?

java - Java 中的基元与对象

Java 线程和关闭 Hook

javascript - html5 canvas - 保存路径或剪辑区域以重复使用

java - 从 python 编译 java

java - 在 java 9 中使用带有 javac 的模块命令时出错

netbeans 中的 Java 堆空间......但我已经增加了堆大小!

python - 优化基于另一个字段从一个字段中提取子字符串的循环