迴圈的一些細節

2021-06-29 14:04:45 字數 1561 閱讀 2666

1、迴圈執行次數相同,大迴圈放在外面還是小迴圈放在外層效率高呢?
int end1 = 10;

int end2 = 100;

int end3 = 1000000;

long starttime = system.nanotime();//開始時間

for(int i=1;i<=end3;i++)

}} long endtime = system.nanotime();//執行結束時間

int end1 = 10;

int end2 = 100;

int end3 = 1000000;

long starttime = system.nanotime();//開始時間

for(int i=1;i<=end1;i++)

}} long endtime = system.nanotime();//執行結束時間

我測試這兩個**時,是第乙個程式執行時間稍微短。。。1000000000 4526307945ns。第二個是:1000000000 5150243082ns。不是應該把迴圈次數多的放在內層,減少cpu迴圈內外層的切換時間,然後會更快麼。

2、計算放在迴圈內的重複使用

int count=0;

long starttime = system.nanotime();//開始時間

//int end = getendtime();

for(int i=1;i<=getendtime();i++)

long endtime = system.nanotime();//執行結束時間

system.out.println(count);

system.out.println(endtime-starttime+"ns");

執行結果:

1000

25881ns

int count=0;

long starttime = system.nanotime();//開始時間

int end = getendtime();

for(int i=1;i<=end;i++)

long endtime = system.nanotime();//執行結束時間

system.out.println(count);

system.out.println(endtime-starttime+"ns");

執行結果:

1000

8925ns

第一段**重複進行多餘的計算。

3、區域性變數與成員變數的訪問

區域性變數是在棧上分配的,而類的例項變數在堆中分配的,對區域性變數的訪問速度快於對例項變數的訪問速度。所以當迴圈多次訪問某例項變數時,可先將例項變數賦值給區域性變數。然後對區域性變數訪問。

public class main {

private int end = 1000;

public void fun1()

{ for(int i=0;i

C 的一些細節

1.c 中,將負數賦值給unsigned是完全合法的。例如,將 1賦值給unsigned char,那麼結果是255.2.c 中,double的精度和計算速度都要超過float,long double則需要承擔額外的執行代價。3.std ou t hi d endl 等價於std out hi 4....

SDWebImage的一些細節

清空快取 cleandisk 清除過期快取,計算當前快取的大小,和設定的最大快取數量比較,如果超出那麼會繼續刪除 按照檔案穿件的先後順序 cleardisk 直接刪除重新建立 7天 sdwebimagemanager sharedmanager imagecache cleandisk 取消當前所有...

C 一些細節

include include pthread.h using namespace std static pthread mutex t mutex class single class single public static single instance static single getin...