java - 编译器优化: will double checking a case cause removal?

标签 java data-structures binary-search-tree compiler-optimization

当我编写 BST 查找函数时:

public static boolean find(Node root, int value){
    if(root == null){
        return false;
    }
    Node iter = root;

    while(iter != null){
    .....
    }
    return false;
}

编译器会删除

if(root == null){
   return false;
}

或者没有。因为我无论如何都会在 while 循环中检查条件。

谢谢。

ps。我刚刚意识到,我是按值传递的,所以不需要 iter Node..太多的 C

最佳答案

这取决于您的优化。如果您进行了全面优化,并且编译器可以证明删除初始 if 不会更改函数的输出,那么它可能会删除它。

在您提供的确切代码示例中,我敢说编译器确实可以优化第一个 ifaway。

关于java - 编译器优化: will double checking a case cause removal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20108012/

相关文章:

java - response.flushBuffer() 不工作

java - srid(几何)函数不存在: Java hibernate

java - 基于第一次排序,再次排序 Sqlite vs Java (Android)

C++编译时构造二叉搜索树

java - 二叉搜索树的高度

sql - 使用 sql 连接的高效广度优先搜索

java - JAX-RS,Map<String,String> 到 JSON 没有开销?

java - 在 Java (Swing) 中可以注册多个按键监听器事件吗?

data-structures - 用于搜索和插入位串的数据结构,其中只有 "1"是重要的

arrays - 删除重复字符