欧美性猛交xxx嘿人猛交_又色又爽又高潮免费观看_精品国产一区二区三区久久影院_青娱乐极品视觉盛宴国产视频

技術頻道導航
HTML/CSS
.NET技術
IIS技術
PHP技術
Js/JQuery
Photoshop
Fireworks
服務器技術
操作系統
網站運營

贊助商

分類目錄

贊助商

最新文章

搜索

[C#技巧]C#數組矩陣for迭代,順序不同竟然速度相差15倍

作者:admin    時間:2023-5-6 12:27:3    瀏覽:

在本文中,我們將做一個實驗,目的是證明在C#中使用內存局部預取,是可以以獲得更好的性能,即是執行速度更快。

我們將看兩個例子,我們在矩陣上迭代,并計算有多少元素大于零。為簡單起見,假設我們有一個數組數組,大小為 5000×5000。

 

代碼 1:

for (int i = 0; i < matrix.Length; i++)
{
    for (int j = 0; j < matrix.Length; j++)
    {
        if (matrix[i][j] > 0) //行先
        {
            result++;
        }
    }
}

代碼 2:

for (int i = 0; i < matrix.Length; i++)
{
    for (int j = 0; j < matrix.Length; j++)
    {
        if (matrix[j][i] > 0) //列先
        {
            result++;
        }
    }
}

你認為哪種算法會執行得更快?

如果你猜到了第一個,那你是對的。以下是我們機器上的基準測試結果:

 

但是,我們應該明白為什么會這樣。

數組和矩陣(數組的數組)按順序存儲在內存中,矩陣實際上是按行優先存儲的,這意味著當我們逐行訪問矩陣數據時,我們將訪問后續的內存位置,這就是我們如何從內存局部性原則中受益,并獲得改進的性能。

相關文章

標簽: asp.net  CSharp  for  代碼性能  優化  
x