๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ ๊ธฐ๋ก/TIL

[TIL] 20231206

Understanding Swift Performance

Swift ์„ฑ๋Šฅ ์ดํ•ดํ•˜๊ธฐ!!!

Swift์˜ ๋‹ค์–‘ํ•œ ์ถ”์ƒํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๋ชจ๋ธ๋ง ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•ด ์„ฑ๋Šฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Œ!!

 

Swift์˜ ์ถ”์ƒํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ดํ•ดํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ ๊ตฌํ˜„์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์šฐ๋ฆฌ๊ฐ€ ์ถ”์ƒํ™”๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ , ์ถ”์ƒํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์„ ํƒํ•  ๋•Œ ์„ธ ๊ฐ€์ง€ ์ธก๋ฉด์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

 

1. ๋‚ด ์ธ์Šคํ„ด์Šค๊ฐ€ ์Šคํƒ(Stack)์— ํ• ๋‹น๋  ๊ฒƒ์ธ๊ฐ€? ์•„๋‹ˆ๋ฉด ํž™(Heap)์— ํ• ๋‹น๋  ๊ฒƒ์ธ๊ฐ€?

2. ์ด ์ธ์Šคํ„ด์Šค๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ๋ ˆํผ๋Ÿฐ์Šค ์นด์šดํŒ…(Reference Counting) ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?

3. ์ด ์ธ์Šคํ„ด์Šค์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ, Static Dispatch๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœ๋˜๋Š”์ง€? ์•„๋‹ˆ๋ฉด Dynamic Dispatch๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœ๋˜๋Š”์ง€?

 

๋น ๋ฅธ Swift ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ™œ์šฉํ•˜์ง€ ์•Š๋Š” ์—ญ๋™์„ฑ๊ณผ ๋Ÿฐํƒ€์ž„์— ๋Œ€ํ•œ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

์ฆ‰, ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๊ณ , ์™ผ์ชฝ์œผ๋กœ ๊ฐˆ ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ๋†’์•„์ง„๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋” ๋‚˜์€ ํผํฌ๋จผ์Šค๋ฅผ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ์ด๋Ÿฌํ•œ ๋‹ค์–‘ํ•œ ์ฐจ์›์„ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•จ!!

Allocation (ํ• ๋‹น)

Stack

Swift๋Š” ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ œํ•˜๋Š”๋ฐ, ๋ฉ”๋ชจ๋ฆฌ ์ค‘ ์ผ๋ถ€๋Š” Stack ์˜์—ญ์— ํ• ๋‹น๋จ

Stack์€ LIFO(Last In, First Out) ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šคํƒ ํฌ์ธํ„ฐ๋ฅผ top์— ๋‘๊ธฐ๋งŒ ํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น/ํ•ด์ œ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Œ

ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์Šคํƒ ํฌ์ธํ„ฐ๋ฅผ ์ค„์ด๊ณ , ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ ์ฆ๊ฐ€ ์‹œ์ผœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

(์‹œ๊ฐ„๋ณต์žก๋„ O(1)๋กœ ๊ต‰์žฅํžˆ ๋น ๋ฆ„!!)

 

Heap

ํž™์„ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํƒ์ด ๋™์ (dynamic) ์ˆ˜๋ช…์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์—†๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. but ์Šคํƒ๋ณด๋‹ค ํšจ์œจ์„ฑ์€ ๋–จ์–ด์ง

 

ํšจ์œจ์„ฑ์ด ๋น„๊ต์  ๋–จ์–ด์ง€๋Š” ์ด์œ ?

ํž™์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋ ค๋ฉด ํž™ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ•„์š”ํ•œ ๊ณต๊ฐ„ ๋งŒํผ์˜ ๋นˆ ๊ณต๊ฐ„์„ ์ฐพ์•„์•ผ ํ•จ

 


์ •๋ฆฌ๋ฅผ ์•„์ง ๋‹ค ๋ชปํ•ด๊ฐ€์ง€๊ตฌ..... ์ด๋ฒˆ์ฃผ ๋‚ด๋กœ ๊ผญ ์ถ”๊ฐ€ํ•˜๋„๋ก ํ•˜๊ฒ ์Šด๋‹ˆ๋‹ค.......

'๐Ÿ“ ๊ธฐ๋ก > TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[TIL] 20231215  (1) 2023.12.18
[TIL] 20231207  (3) 2023.12.08
[TIL] 20231205  (2) 2023.12.05
[TIL] 20231204  (1) 2023.12.04
[TIL] 20231130  (2) 2023.11.30