for迴圈執行效率

2021-09-30 10:43:04 字數 748 閱讀 5747

#include #include #include #include #define a 10000

#define b 10

#define num 100000

void main(){

double a[a][b];

double b=0;

int t1=clock();

for (int n=0;n

第一種情況是內外層迴圈次數相差比較大,這種情況次數少的應該放外迴圈,迴圈次數多的應該放內迴圈。這是因為如果外迴圈比較大,則記憶體位址跳躍性比較大,cache命中率比較低,所以會慢點,不過也不是絕對的,可是概率上可能會慢。

#include #include #include #include #define a 10000

#define b 10

#define num 10000

void main(){

double a[a][b];

double b=0;

int t1=clock();

for (int n=0;n

第二種情況影響迴圈效率的主要是訪問陣列的速度,由於二維陣列在記憶體中是先存放行,然後再存放列。所以在訪問陣列時,如果先訪問行再訪問列,則訪問位址是連續的,會比較快。但是如果先訪問列再訪問行,則每次訪問陣列中元素時,位址跳躍都比較大,cache命中率比較低,在物理記憶體不足情況下將會分布儲存資料,這樣每訪問一次陣列會在不會頁面中跳轉,記憶體頁面排程和頁面交換次數往往會增加,這會大大降低訪問速度。

for迴圈巢狀執行效率

今天做專案時遇到乙個for迴圈的巢狀問題,乙個迴圈次數多,乙個次數少,怎樣設計效率較高.想起以前筆試時遇到過這個問題,當時由於時間倉促,沒有細想,今天在實際 中遇到這麼問題,於是動筆算了下.設兩個迴圈次數分別為m n,m為乙個很大的數,n為乙個較小的數。假設在m迴圈中第i 0則大迴圈套小迴圈所需的運...

關於for迴圈的執行效率問題

我以前遇到的問題大概都是這種型別的 1for inti 0 i 100 i 2 7 8和 9 for inti 0 i 10000 i 10 15 這兩個程式那個執行效率高,如果是以前我會毫不猶豫的說是第乙個效率高,這是由於cpu切換的次數比較多導致效能下降,知道這句話不理解什麼原理。我比較贊同下面...

For迴圈效率

1 單層for迴圈 long start system.currenttimemillis int sum 0 for int i 0 i 1000000000 i long end system.currenttimemillis system.out.println end start 輸出時間...