์ข์ ์๋ฃ๋ ํค์๋ ์์ด?
์ด๋ฒ์ ์๋ชปํด์ ๋ฉ๋ชจ๋ฆฌ ์์ฒญ ์ก์๋จน๋๋ก ์งฐ๋ค๊ฐ ํ๋ก์ธ์ค๊ฐย ์์ฒญ ๋๋ ค์ก์๋๋ฐ
์์ผ๋ก๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ํผํฌ๋จผ์ค๊ฐ ๋ง์ด ๋๋น ์ง๊น๋ด ๊ณต๋ถํด๋๊ณ ์ถ๋ค..
๊ทธ๋ฅ ๋จ ๋์น๊ฒ ์ฐ๋ฉด ํ๋์ ์ผ์ ๋ถ๋ถ์ ๋จ์ฒ๋ผ(๊ฐ์๋ฉ๋ชจ๋ฆฌ) ์ฌ์ฉํด์ ๊ฐ๋๋ ค์ง. ์๋์ฐ์์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ ๋์์๋๋ฐ ๊ทธ๋ฐ ๊ฒฝ์ฐ์๋ ๊ทธ๋ฅ ๋ฉ๋ชจ๋ฆฌํ ๋น ์คํจ ์์ธ ๋์ง. ํธ๋ค๋ง ์ํ๋ฉด ์ฑ ์ข ๋ฃ๋จ
๋ต๋ณ ๊ณ ๋ง์! ๊ทธ ์ด์ธ์๋ ๋จ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด Context-switching ํ ๋ PCB์ ์ ์ฅํด์ผ ๋๋ ์ ๋ณด๊ฐ ๋ง์์ ธ์ ํด๋น ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ ๋๋ง๋ค ์ฑ๋ฅ ์ํด๊ฐ ์์ ์ ์๋๋ฐ, ์ด๋ฐ ์ง์์ง์ํ ํ๋ก์ธ์ค ์คํ ์๋์ ์ํฅ์ ๋ฏธ์น๋ ์ง์ ๋ ์๊ณ ์๋๊ฑฐ ์์ด?
๊ฑฐ๊ธฐ๊น์ง ๋ชจ๋ฆ... ์์งํ ๋จํ ๋น์ ๋์น๊ฒ๋๋ง ์ํ๋ฉด ์ต์ ํ๋ ๋ฐ ์ด์ ํ๋ค๊ณ ์๊ฐํจ. ๋ฉํฐ์ค๋ ๋ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ ์บ์ ํํธ๋ฅผ ์ ๊ฒฝ์ฐ๋ฉด ์ต์ ํ๋๋ค๊ณ ๋ ํ๋๋ฐ ํด๋ณธ์ ์ ์์.
๊ผญ ๋ฉํฐ์ค๋ ๋๊ฐ ์๋๋๋ผ๋ ์บ์ ํํธ๋ ์ค์ํ๋๊น ๋ด๊ฐ ์๋๊ฑฐ๋ผ๋ ์ผ๋จ ๋งํด๋ณผ๊ฒ. ์บ์ ํํธ๊ฐ ์ค์ํ ์ด์ ๋ ์์ฆ CPU๋ ์ฑ๋ฅ์ด ์กธ๋ผ ์ฉ์ฉํด์ ์ผ๊ฐ์ ๊ฐ๋ค์ค๋ ๋ฉ๋ชจ๋ฆฌ์์ ๋ค์ ์ผ๊ฐ์ ๊ฐ๋ค์ฃผ๊ธฐ ์ ์ ๊ทธ๊ฑธ ๋ค ๋๋ด๋ฒ๋ ค์ ๋ ธ๋(Idle)์๊ฐ์ด ๋ง์์ง๊ณ , ์ด๊ฑด ์ฑ๋ฅ์ ์ํด๋ก ์ด์ด์ง์ง. ์บ์๊ฐ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ํ์ํค๋๋ฐ ๋์์ด ๋ผ. ๊ทธ๋ผ ์บ์ ํํธ์จ์ ๋์ด๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ๋ ๊น? ์บ์ ํํธ์จ์ ์ฐธ์กฐ ์ง์ญ์ฑ(Locality)์ ์ํฅ์ ํฌ๊ฒ ๋ฐ์. ์ด ์ค์์๋ ์ํฅ์ด ํฐ ๊ณต๊ฐ ์ง์ญ์ฑ์ ์๋ฅผ ๋ค์ด๋ณด์๋ฉด ํ ์์ญ์ ์๋ฌด๋ฐ๋ ์ค๊ตฌ๋๋ฐฉํ๊ฒ ํผ์ ธ์๋ ๊ฐ์ฒด๋ค์ ์ฐธ์กฐํ๋ list๋ฅผ ์ฌ์ฉํ๋ ์ฐ์ฐ๊ณผ ํ์์ญ์ ์ ํด์ง ์์น์ ์ฐ์์ ์ผ๋ก ์กด์ฌํ๋ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ list๋ฅผ ์ฌ์ฉํ๋ ์ฐ์ฐ์ ๋น๊ตํด๋ณด๋ฉด ํ์๊ฐ ๋ ์ ๋ฆฌํด.
์๋๋ฉด ํ์๋ ๋ค์ ์ผ๊ฐ์ด ๋ง์นจ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์์ ํ๋ฅ ์ด ๋๊ฑฐ๋ ! ๊ตณ์ด ๋ฉ๋ฆฌ๊ฐ์ ์ฐธ์กฐํ ํ์๊ฐ ์์ด์ ์ผ์ ์ด์ฌํ ํ ์ ์์ง. ๊ฒ์ ๊ตฌํ์์๋ ์ด๋ฅผ ์ ๊ฒฝ์ด ์ ๋ช ํ ํจํด์ด ์๋๋ฐ ECS(Entity Component System)์ด๋ผ๊ณ ์๋ง ๋๋ ์๊ณ ์์๊ฑฐ์ผ. ์ ๋ํฐ์์๋ ๊ตฌํํ ์ ์๋๋ฐ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์. class๋ ์ฐธ์กฐ ํ์ ์ด๊ณ struct๋ ๊ฐํ์ ์์ ์๊ณ ์์๊ฑฐ์ผ. ๊ทธ๋ฆฌ๊ณ ๋๊ฐ ์ฐธ์กฐํด์ผ ํ ์๋ง์ ๊ฒ์ ๊ฐ์ฒด๋ค์ ๋ด๊ณ ์๋ container๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ๋ง์ฝ ๊ฒ์ ๊ฐ์ฒด๊ฐ class๋ผ๋ฉด ๋์ container๋ ์๋ง์ ์ฐธ์กฐ๋ฅผ ๋ด๊ณ ์๋ container์ผํ ๊ณ foreach๋ก ๊ฒ์ ๊ฐ์ฒด๋ง๋ค Update๋ฅผ ๋๋ฆฐ๋ค๊ณ ์น๋ฉด ํ ๋ฉ๋ชจ๋ฆฌ ์ด๋๊ฐ์ ์ค๊ตฌ๋๋ฐฉ ํผ์ ธ์๋ ๋์ ์ธ์คํด์ค์ ์ ๊ทผํด์ผ ํด.
ํ์ง๋ง container๋ฅผ struct๋ฅผ ๋ด๋ ๊ณ ์ ๋ ํฌ๊ธฐ์ Array๋ก ์ ์ธํ๋ค๋ฉด ๋์ Array๋ ๋ฐ์ง๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ struct๋ค์ ๋ด๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฐธ์กฐ ์ง์ญ์ฑ์ด ๋งค์ฐ ๋์์ ธ์ ์บ์ ํํธ์จ์ด ๋์์ง๊ณ , ์ด๋ CPU์ ์ฑ๋ฅ์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ ์ ์๊ฒ ๋์ง. ๋ด๊ฐ ์ฝ์ ์ฑ ์์๋ ๊ฐ๋ฐ์๊ฐ ECS ํจํด ๋์ ํ ํผํฌ๋จผ์ค๊ฐ 50๋ฐฐ ๋์์ก๋ค๊ณ ๋์์๊ธฐ๋ ํ์ด. ํน์ ๋ค ์๋ ์๊ธฐ์๋ค๋ฉด TMI ๋ฏธ์ํด ^^;
๋ฉ๋ชจ๋ฆฌ ๊ฑฑ์ ํ๋ฉด์ ํผํฌ๋จผ์ค ๊ฑฑ์ ํ๋ค๋ณด๋ฉด ์ฝ๋ ์๋ ํผํฌ๋จผ์ค๋ฅผ 2๋ฐฐ๋ก ๋์น๋ค๊ณ ๋ณธ๋ค. - dc App
์ฝ๋ ์์ฑ์๋ ๋งํ๋ ๊ฒ - dc App