优化 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
的错误方法。
我实际上是 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
的错误方法。