天天看點

使用鋸齒數組提高效率

這個範例比較多元數組和鋸齒資料的性能差異

所謂鋸齒數組,是一種特殊的數組,即我們常說的數組的數組。

我們所使用的範例是把一年的資料用随機數填充起來

如果用多元數組的話,因為預先定義好了維的長度,是以事實上在裡面是有空的單元的。例如第二個維是31,但是有的月份可能沒有31号這一天。

鋸齒數組,在數組裡面放的還是數組,這樣每個數組的長度是可以精确控制的

經驗證明:鋸齒數組不僅在某些時候節省空間,而且可以比較顯著地提高性能。

使用鋸齒數組提高效率

static void main(string[] args)

使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率

{

使用鋸齒數組提高效率
使用鋸齒數組提高效率

    int[,] multi = new int[12, 31];

使用鋸齒數組提高效率

    random rnd = new random();

使用鋸齒數組提高效率
使用鋸齒數組提高效率

    int[][] jagged = new int[12][];

使用鋸齒數組提高效率
使用鋸齒數組提高效率

    for (int i = 0; i < 12; i++)

使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率

        for (int m = 0; m < datetime.daysinmonth(datetime.now.year, i + 1) - 1; m++) 

使用鋸齒數組提高效率
使用鋸齒數組提高效率

            multi[i, m] = rnd.next(100);

使用鋸齒數組提高效率

        }

使用鋸齒數組提高效率

    }

使用鋸齒數組提高效率
使用鋸齒數組提高效率

    console.writeline("開始計算多元數組于:"+datetime.now.tolongtimestring());

使用鋸齒數組提高效率
使用鋸齒數組提高效率

    int sum = 0;

使用鋸齒數組提高效率

    for (int k = 0; k < 65536; k++)

使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率

        for (int i = 0; i < 12; i++)

使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率

            for (int m = 0; m < datetime.daysinmonth(datetime.now.year, i + 1) - 1; m++)

使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率

                sum += multi[i, m];

使用鋸齒數組提高效率

            }

使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率

    console.writeline("結束計算多元數組于:"+datetime.now.tolongtimestring()+"\n");

使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率

        int days = datetime.daysinmonth(datetime.now.year, i + 1);

使用鋸齒數組提高效率

        jagged[i] = new int[days];

使用鋸齒數組提高效率

        for (int m = 0; m < days - 1; m++)

使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率

            jagged[i][m] = rnd.next(100);

使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率

    sum = 0;

使用鋸齒數組提高效率
使用鋸齒數組提高效率

    console.writeline("開始計算鋸齒數組于:"+datetime.now.tolongtimestring());

使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率

            int days = datetime.daysinmonth(datetime.now.year, i + 1);

使用鋸齒數組提高效率

            for (int m = 0; m < days - 1; m++)

使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率

                sum += jagged[i][m];

使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率
使用鋸齒數組提高效率

    console.writeline("結束計算鋸齒數組于:"+datetime.now.tolongtimestring());

使用鋸齒數組提高效率
使用鋸齒數組提高效率

    console.read();

使用鋸齒數組提高效率

}

結果如下,高下立判啊

使用鋸齒數組提高效率