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

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

在2D數(shù)組上進(jìn)行迭代時(shí),嵌套循環(huán)的哪種排序更為有效

在2D數(shù)組上進(jìn)行迭代時(shí),嵌套循環(huán)的哪種排序更為有效

慕田峪7331174 2019-11-28 13:02:05
在時(shí)間(緩存性能)方面,以下哪種嵌套循環(huán)在2D數(shù)組上進(jìn)行迭代更有效?為什么?int a[100][100];for(i=0; i<100; i++){   for(j=0; j<100; j++)   {       a[i][j] = 10;       }}要么for(i=0; i<100; i++){   for(j=0; j<100; j++)   {      a[j][i] = 10;       }}
查看完整描述

3 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

第一種方法稍好一些,因?yàn)榉峙浣o的像元彼此相鄰放置。


第一種方法:


[ ][ ][ ][ ][ ] ....

^1st assignment

   ^2nd assignment

[ ][ ][ ][ ][ ] ....

^101st assignment

第二種方法:


[ ][ ][ ][ ][ ] ....

^1st assignment

   ^101st assignment

[ ][ ][ ][ ][ ] ....

^2nd assignment


查看完整回答
反對(duì) 回復(fù) 2019-11-28
?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

在您的第二個(gè)代碼段中j,每次迭代中的更改都會(huì)產(chǎn)生一種空間局部性較低的模式。請記住,在幕后,數(shù)組引用會(huì)計(jì)算:


( ((y) * (row->width)) + (x) ) 

考慮一個(gè)簡化的L1緩存,該緩存具有足夠的空間來容納數(shù)組的50行。對(duì)于前50個(gè)迭代,您將為50個(gè)緩存未命中付出不可避免的代價(jià),但是接下來會(huì)發(fā)生什么呢?對(duì)于從50到99的每次迭代,您仍將緩存未命中,并且必須從L2(和/或RAM等)獲取。然后,x更改為1并重新y開始,導(dǎo)致另一個(gè)高速緩存未命中,因?yàn)殛嚵械牡谝恍幸褟母咚倬彺嬷兄鸪?,依此類推?/p>


第一個(gè)片段沒有這個(gè)問題。它以行優(yōu)先的順序訪問數(shù)組,從而獲得更好的局部性-您僅需為每行最多一次(如果在循環(huán)開始時(shí)數(shù)組中的行不存在于高速緩存中)支付高速緩存未命中的費(fèi)用。


話雖如此,這是一個(gè)非常依賴于體系結(jié)構(gòu)的問題,因此您必須考慮細(xì)節(jié)(L1緩存大小,緩存行大小等)才能得出結(jié)論。您還應(yīng)該同時(shí)衡量這兩種方式,并跟蹤硬件事件,以獲取具體的數(shù)據(jù)以得出結(jié)論。


查看完整回答
反對(duì) 回復(fù) 2019-11-28
  • 3 回答
  • 0 關(guān)注
  • 636 瀏覽
慕課專欄
更多

添加回答

舉報(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)