优化 java 代码以降低复杂性

Optimization of java code for reducing complexity

我实际上是 java 图书馆的新手。我不知道这段代码在做什么。 我被赋予了优化这个的任务。任何帮助都会有用。

我的意思是问 str.equals(local) 是否在 for 循环中检查整个字符串 aur 的特定索引值。

public void fnc(String str, int[] ar1)
    {
        String local = "findnumber";
        for(int i=0; i<ar1.length; i++)
        {
            if(str.equals(local) && ar1[i] * 2 > 10) 
            {
                Integer ip = new Integer(ar1[i]);
                ip = ip * 2;
                System.out.print(ip.toString());
            }
        }
    }

算法的大 O 复杂度是 O(N),其中 N 是数组大小。你不能改进......对于提供的参数和产生相同的输出。

虽然可以做一些事情来提高效率。

  • 提示:寻找可以执行一次的每次循环迭代执行的计算。
  • 提示:寻找一些不必要的对象创建1
  • 提示:不需要使用引用类型。

还有一两个其他 有问题的 微优化,但看看您是否可以在没有任何提示的情况下发现它们。 (我说 "questionable" 是因为我怀疑 JIT 编译器会自己做同样的优化。)

最后一点:代码的实际速度将由 print 语句及其 OS 将内容写入(例如)控制台的能力决定。并且可能受 JVM 启动/预热影响...除非多次调用 fnc 方法。


1 - 尽管有其他任何内容,new Integer(...) 是将 int 转换为 Integer 的错误方法。