[英]Speed of for loop: beyond Big-O notations
這個問題與Big-O表示法無關。
這實際上是讓我驚訝的地方。 考慮一下代碼片段:
for(int i = 0; i < 13; i++){
long beg = System.currentTimeMillis();
int k, l;
for(l = 0; l < 1000000; l++){
for(int j = 0; j < 65535; j++) {
if(pixels[j] == pixels[l])
k = j;
//j = 70000;
}
}
System.out.println(System.currentTimeMillis() - beg + " ms");
System.out.println();
}
輸出為:
10毫秒
30毫秒
10毫秒
10毫秒
10毫秒
10毫秒
10毫秒
10毫秒
10毫秒
10毫秒
10毫秒
現在,考慮一下代碼片段:
for(int i = 0; i < 13; i++){
long beg = System.currentTimeMillis();
int k, l;
for(l = 0; l < 1000000; l++){
for(int j = 0; j < 65535; j++) {
if(pixels[j] == pixels[l])
//k = j;
j = 70000;
}
}
System.out.println(System.currentTimeMillis() - beg + " ms");
System.out.println();
}
輸出為:“ 164596 ms”,依此類推。 為什么?
每次將j重置為0。
這意味着您陷入了無限循環。
for(int j = 0; j < 65535; j++) {
//break;
j = 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.