在多重循環中,如果有可能,應當將最長的循環放在最內層,最短的循環放在最外層,以減少CPU跨切循環層的次數。
使用以下代碼對嵌套For循環的效率進行測試驗證:
// For嵌套性能.cpp : Defines the entry point for the console application. // 返回欄目頁:http://www.bianceng.cn/Programming/cplus/ #include "stdafx.h" #include <iostream> #include <time.h> using namespace std; int main(void) { clock_t cstart,cends; cstart=clock(); long sum1 =0; long a1[5][10000000]; for(long i = 0; i < 5; i++) { for(long j = 0; j < 10000000; j++) { sum1 += a1[i][j]; } } cout << "sum1=:" << sum1 << endl; cends=clock(); cout << "Clock時間差:" << cends-cstart << endl; ///////////////////////////////////////////////////////////////// cstart=clock(); long sum =0; long a[10000000][5]; for(i = 0; i < 10000000; i++) { for(long j = 0; j < 5; j++) { sum += a[i][j]; } } cout << "sum=:" << sum << endl; cends=clock(); cout << "Clock時間差:" << cends-cstart << endl; ////////////////////////////////////////////////////////////// system("pause"); return 0; }
運行結果:
以上代碼在Windows Server 2008 x64 系統上編譯通過,
IDE為:Microsoft Visual c++ sp6
可以編譯通過,但是運行會出現錯誤:
運行時錯誤:Stack Overflow的解決辦法:
返回欄目頁:http://www.bianceng.cn/Programming/cplus/