等效静态和非静态方法的速度差异大
2022-08-31 11:53:50
在此代码中,当我在方法中创建一个 Object,然后调用该对象方法:(在 16010 毫秒内运行)时,它的运行速度比使用此注释调用它快得多:(在 59516 毫秒内运行)。当然,当我在不创建对象的情况下运行它时,我会使方法成为静态的,因此可以在主要中调用它。main
ff.twentyDivCount(i)
twentyDivCount(i)
public class ProblemFive {
// Counts the number of numbers that the entry is evenly divisible by, as max is 20
int twentyDivCount(int a) { // Change to static int.... when using it directly
int count = 0;
for (int i = 1; i<21; i++) {
if (a % i == 0) {
count++;
}
}
return count;
}
public static void main(String[] args) {
long startT = System.currentTimeMillis();;
int start = 500000000;
int result = start;
ProblemFive ff = new ProblemFive();
for (int i = start; i > 0; i--) {
int temp = ff.twentyDivCount(i); // Faster way
// twentyDivCount(i) - slower
if (temp == 20) {
result = i;
System.out.println(result);
}
}
System.out.println(result);
long end = System.currentTimeMillis();;
System.out.println((end - startT) + " ms");
}
}
编辑:到目前为止,似乎不同的机器会产生不同的结果,但是使用JRE 1.8.*是原始结果似乎始终如一地再现的地方。