์ ์บ์ ๋ฏธ์ค๋ฅผ ์ค์ฌ์ ๋จ์์ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๋ ๋์ cpu๊ฐ ๋ ธ๋ ๊ฒฝ์ฐ๋ฅผ ์ต์ํํ๋ ๊ฒ.
OOP์์ ์ฐจ์ด์ ์, OOP๋ ๊ฐ์ฒด์ ํ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์์ ๋ ๊ทธ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ์ดํฐ๊ฐ ์ง์ญ์ฑ์ ์๋ฆฌ(principle of locality)๋ฅผ ๋ฐ๋ฅด๋๋ก ํ๋๋ฐ ํฌ๊ฒ ์ ๊ฒฝ์ ์ฐ์ง ์๋๋ค๋ ๊ฒ.ย
๊ทธ ์ฐจ์ด์ ๋๋ฌธ์ DOP์ ๋ฌ๋ฆฌ OOP๋ ์บ์ ๋ผ์ธ์ ํน์ง์ ์ต๋ํ์ผ๋ก ํ์ฉํ์ง ๋ชปํ๋ค.
์บ์ ๋ผ์ธ์ ํน์ง์ด๋, ์บ์ ๋ผ์ธ์ด (๋ณดํต 64bytes ์) ์ ํด์ง ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ณ ์ ์ฅํ๋ค๋ ๊ฒ์ด๋ค. ์ฆ, ๊ตฌ์กฐ์ฒด์ ์ด ํฌ๊ธฐ๊ฐ, ๋ญ ํ 12 bytes์ฏค ๋๋ค๊ณ ํ๊ณ ๊ทธ ๊ตฌ์กฐ์ฒด ํ๋๋ง ์ฐธ์กฐํ๋ค๊ณ ํด๋ ์บ์ ๋ผ์ธ์ ๋๊ฐ์ด (๋ณดํต 64 bytes์) ์ ํด์ง ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์จ๋ค.ย
๋ง์ฝ ์ง์ญ์ฑ์ ์๋ฆฌ๊ฐ ์ ๋ง ํํธ ์์ด ์ง์ผ์ง๊ณ ์๋ค๋ฉด, ๋๋จธ์ง ๋ฐ์ดํฐ๋ ๋ชจ๋ ์ ํฌ๋ค. ์บ์ ๋ฏธ์ค๋ฅผ ์ค์ด๋๋ฐ ๋์์ด ๋์ง ๋ชปํ๋ค. ๋ฐ๋ฉด ๋ง์ฝ ์ง์ญ์ฑ์ ์๋ฆฌ๊ฐ ์ ๋๋ก ์ง์ผ์ง๊ณ ์๋ค๋ฉด, ๋๋จธ์ง ๋ฐ์ดํฐ๋ ์ ํฌ๊ฐ ์๋๋ฉฐ ์บ์ ๋ฏธ์ค๋ฅผ ์ค์ด๋๋ฐ ํฐ ๋์์ด ๋ ์ ์๋ค.
์๋ฅผ ๋ค์ด๋ณด์.ย f(arr)์ด๋ผ๋ ๊ฐ๋จํ ํจ์๊ฐ ์์ด ๊ทธ ํจ์๋ ๋ฐฐ์ด์ ํ๋ ์ ๋ ฅ ๋ฐ๊ณ ๊ฐ ์์๋ค์ 1์ ๊ฐ์ ๋ํ๋ค๊ณ ํ์.
f(arr) {
for val in arr {
val += 1
}
}
2๊ฐ์ ๋ฐฐ์ด์ด ์๋ค. arr1๊ณผ arr2๋ ๋ชจ๋ ๋๊ฐ์ ์ซ์์ย ์์๋ฅผย ๊ฐ์ง๊ณ ย ์์ง๋ง, arr1์ ์์๋ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์์ผ๋ก ์ฐฐ์น ๋ฌ๋ผ๋ถ์ด ์๊ณ ย arr2์ ์์๋ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์์ผ๋ก ์ฌ๋ฐฉ์ ํฉ์ด์ ธ ์๋ค.
f(arr1) {
for val in arr1 {
val += 1
}
}
<=>
f(arr1) {
arr1[0] += 1
arr1[1] += 1
arr1[2] += 1
arr1[3] += 1
}
์ด ๊ฒฝ์ฐ, f(arr1)์ ์ฒซ๋ฒ์งธ ๊ตฌ๋ฌธ arr1[0] += 1์ ์ฒ๋ฆฌํ ๋ arr1[0]์ด ์บ์์ ์ด๋ฏธ ์ฌ๋ผ์ ์๋์ง ํ์ธํ๋ค. ์๋ค๊ณ ๊ฐ์ ํ๋ฉด ์บ์ ๋ฏธ์ค๊ฐ ๋จ๊ณ arr1[0]์ ๋จ์์ ์ฐธ์กฐํด ์บ์์ ์ฌ๋ฆฐ๋ค.ย ์ด๋ arr1[0]์ ํฌ๊ธฐ๋ 64 bytes๋ณด๋ค ํ์ฐธ ์ ์ง๋ง, ๊ทธ๋๋ ์ฌ์ ํ ์บ์ ๋ผ์ธ์ arr1[0]๊ณผ ํจ๊ป ๊ทผ์ฒ์ ์๋ ๋๋จธ์ง ๋ฐ์ดํฐ๊น์ง ๋ชจ๋ ํฌํจํด 64 bytes๋ฅผ ํจ๊ป ์บ์์ย ์ฌ๋ฆฐ๋ค.
๊ทธ ๋ค์ ๊ตฌ๋ฌธ arr1[1] += 1์ ์ฒ๋ฆฌํ ๋๋ ๋๊ฐ์ดย arr1[1]์ด ์ด๋ฏธ ์บ์์ ์ฌ๋ผ์ ์๋์ง ํ์ธํ๋ค. ํ์ง๋ง arr1์ ๊ฐ ์์๋ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์์ผ๋ก ์๋ก๊ฐ์ ์ฐฐ์น ๋ฌ๋ผ๋ถ์ด ์์๊ธฐ ๋๋ฌธ์, ๋งค์ฐ ๋์ ํ๋ฅ ๋ก arr1[1]์ arr1[0]์ด ์บ์์ ์ฌ๋ผ๊ฐ ๋ ํจ๊ป ์บ์ ๋ผ์ธ์ ํฌํจ๋์ด์ ์บ์์ ์ฌ๋ผ๊ฐ์ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์บ์ ํํธ๊ฐ ๋ฌ๋ค.
arr2์์๋ ๋๊ฐ์ ์ผ์ด ์ผ์ด๋ ์ ์๋ค. ๊ฐ ์์๋ค์ด ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์์ผ๋ก ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ด๋ค. 4๊ฐ์ ์์ ๋ชจ๋๊ฐ ์บ์ ๋ฏธ์ค๋ก ๋์ฌ ํ๋ฅ ์ด ๋๊ณ , ๋ฐ๋ผ์ ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ๋๋ฐ ๋ค์ด๊ฐ๋ย 150~250 cpu ์ฌ์ดํด ์ ๋์ ์๊ฐ์ย ๋งค๋ฒ ๊ธฐ๋ค๋ ค์ผ ํ๋ค. ์ ๊ณฑ๊ทผ ํจ์๊ฐย ๋ณดํต 30~50 cpu ์ฌ์ดํด ์ ๋๋ผ๋ ๊ฒ์ ๊ฐ์ํ๋ฉด ์๋นํ ๋ญ๋น๋ค.
๊ทธ๋์ ํ ๋ป์ง ๋๋ฌธ์ ์ค๋ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ๋ค์ด ์๋ค๊ฐ ๋์ ์ฌ ๋ณธ ๊ธ.
arr2๊ฐ ์ด๋จ์?
๋์ฒด ๋ญ ๋ง๋ค๊ธธ๋ ๋ฐ์ดํฐ ์งํฅ์ ํด์ผ ํ ๋งํผ ์ฐ์ฐ์ด ๋ง์๊ฑฐ์?
ํ ์ค ์๋๊ฒ ์๋ฎฌ๋ ์ด์ ๋ง๋๋๊ฑฐ๋ง๊ณ ์์ด์ ์ต๋ํ ์ต์ ํ๋ฅผ ์ํฌ ์ ๋ฐ์...