第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么.NET中的多維數(shù)組比普通數(shù)組慢?

為什么.NET中的多維數(shù)組比普通數(shù)組慢?

至尊寶的傳說 2019-07-26 17:26:53
為什么.NET中的多維數(shù)組比普通數(shù)組慢?我試圖用一個(gè) 盤陀今天的多維數(shù)組,當(dāng)我注意到它的性能并不像我預(yù)期的那樣。使用單維數(shù)組和手動(dòng)計(jì)算索引要比使用2D數(shù)組快得多(幾乎兩倍)。我使用1024*1024數(shù)組(初始化為隨機(jī)值)編寫了一個(gè)測試 ,進(jìn)行了1000次迭代,我在我的機(jī)器上得到了以下結(jié)果:sum(double[], int): 2738 ms (100%)sum(double[,]):     5019 ms (183%)sum(double[][]):    2540 ms ( 93%)這是我的測試代碼:public static double sum(double[] d, int l1) {     // assuming the array is rectangular     double sum = 0;     int l2 = d.Length / l1;     for (int i = 0; i < l1; ++i)         for (int j = 0; j < l2; ++j)             sum += d[i * l2 + j];     return sum;}public static double sum(double[,] d) {     double sum = 0;     int l1 = d.GetLength(0);     int l2 = d.GetLength(1);     for (int i = 0; i < l1; ++i)         for (int j = 0; j < l2; ++j)             sum += d[i, j];     return sum;}public static double sum(double[][] d) {     double sum = 0;     for (int i = 0; i < d.Length; ++i)         for (int j = 0; j < d[i].Length; ++j)             sum += d[i][j];     return sum;}public static void Main() {     Random random = new Random();     const int l1  = 1024, l2 = 1024;     double[ ] d1  = new double[l1 * l2];     double[,] d2  = new double[l1 , l2];     double[][] d3 = new double[l1][];     for (int i = 0; i < l1; ++i) {         d3[i] = new double[l2];         for (int j = 0; j < l2; ++j)             d3[i][j] = d2[i, j] = d1[i * l2 + j] = random.NextDouble();     }     //     const int iterations = 1000;     TestTime(sum, d1, l1, iterations);     TestTime(sum, d2, iterations);     TestTime(sum, d3, iterations);}進(jìn)一步研究表明,第二種方法的IL比第一種方法大23%。(代碼大小68比52)這主要是由于呼叫System.Array::GetLength(int)。編譯器還發(fā)出呼吁Array::Get為盤陀多維數(shù)組,而它只需要ldelem簡單的數(shù)組。所以我想知道,為什么通過多維數(shù)組訪問比普通數(shù)組更慢?我會(huì)假設(shè)編譯器(或JIT)會(huì)做類似于我在第一種方法中所做的事情,但事實(shí)并非如此。你能不能幫助我理解為什么會(huì)發(fā)生這種情況?
查看完整描述

3 回答

  • 3 回答
  • 0 關(guān)注
  • 698 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)