์€ ์บ์‹œ ๋ฏธ์Šค๋ฅผ ์ค„์—ฌ์„œ ๋žจ์—์„œ ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋™์•ˆ 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 ์‚ฌ์ดํด ์ •๋„๋ผ๋Š” ๊ฒƒ์„ ๊ฐ์•ˆํ•˜๋ฉด ์ƒ๋‹นํ•œ ๋‚ญ๋น„๋‹ค.




๊ทธ๋™์•ˆ ํ•œ ๋ป˜์ง“ ๋•Œ๋ฌธ์— ์˜ค๋Š˜ ์ฝ”๋“œ ๋ฒ ์ด์Šค๋ฅผ ๋“ค์–ด ์—Ž๋‹ค๊ฐ€ ๋„์ ์—ฌ ๋ณธ ๊ธ€.