3 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
它有一個(gè)和兩個(gè)循環(huán)版本之間最大的差異(幾乎是三倍)。 這是唯一的一點(diǎn),其中單循環(huán)(即連續(xù)分配)超過(guò)了兩個(gè)循環(huán)版本。(這使得神秘的答案成為可能。)
提案

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
n
for(int j=0;j<n;j++){ a[j] += b[j];}for(int j=0;j<n;j++){ c[j] += d[j];}
a
b
c
d
for(int j=0;j<n;j++){ a[j] += b[j]; c[j] += d[j];}
n = 2
帶著 for(int j=0;j<n;j++){ a[j] += b[j];}for(int j=0;j<n;j++){ c[j] += d[j];}
高速緩存 a[0]
和 a[1]
然后 b[0]
和 b[1]
并設(shè)定 a[0] = a[0] + b[0]
在緩存中-緩存中現(xiàn)在有四個(gè)字節(jié), a[0], a[1]
和 b[0], b[1]
..費(fèi)用=100+100。 集 a[1] = a[1] + b[1]
在緩存中。費(fèi)用=1+1。 重復(fù) c
和 d
.總費(fèi)用= (100 + 100 + 1 + 1) * 2 = 404
帶著 for(int j=0;j<n;j++){ a[j] += b[j]; c[j] += d[j];}
高速緩存 a[0]
和 a[1]
然后 b[0]
和 b[1]
并設(shè)定 a[0] = a[0] + b[0]
在緩存中-緩存中現(xiàn)在有四個(gè)字節(jié), a[0], a[1]
和 b[0], b[1]
..費(fèi)用=100+100。 彈出 a[0], a[1], b[0], b[1]
從緩存和緩存 c[0]
和 c[1]
然后 d[0]
和 d[1]
并設(shè)定 c[0] = c[0] + d[0]
在緩存中。費(fèi)用=100+100。 我懷疑你開(kāi)始看到我要去哪里了。 總費(fèi)用= (100 + 100 + 100 + 100) * 2 = 800
- 3 回答
- 0 關(guān)注
- 570 瀏覽
添加回答
舉報(bào)