Search

๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•ด์„œ

Created At
2021/05/10 15:22
Updated At
2022/03/14 09:50
๋ถ„๋ฅ˜
๋ฉ”๋ชจ๋ฆฌ

์Šคํ† ๋ฆฌ์ง€ vs ๋ฉ”๋ชจ๋ฆฌ

์Šคํ† ๋ฆฌ์ง€ : ์ €์žฅ๊ณต๊ฐ„์€ ํฌ์ง€๋งŒ, ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ์— ์†๋„ ๋งŽ์ด ๊ฑธ๋ฆผ ( ์ฐฝ๊ณ  )
๋ฉ”๋ชจ๋ฆฌ : ์ €์žฅ๊ณต๊ฐ„์€ ์ž‘์ง€๋งŒ, ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ์— ์†๋„ ์ ๊ฒŒ ๊ฑธ๋ฆผ ( ์ฑ…์ƒ ์„œ๋ž )
์ž๋ฃŒ๊ตฌ์กฐ์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ์ฃผ๋กœ ๋‹ค๋ฃฌ๋‹ค.

RAM ์ด๋ž€?

Random Access Memory(์ž„์˜ ์ ‘๊ทผ ๋ฉ”๋ชจ๋ฆฌ)
์ž„์˜ ์ ‘๊ทผ : ์ €์žฅ ์œ„์น˜์— ์ƒ๊ด€ ์—†์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ๋•Œ ํ•ญ์ƒ ์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.
๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ 1๋ฒˆ์ง€์ด๋“ , 145924๋ฒˆ์ง€ ์ด๋“  ์ƒ๊ด€์—†์ด ์ ‘๊ทผ ์‹œ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ํ•ญ์ƒ ๋™์ผํ•˜๋‹ค.
์ฆ‰ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(1) ์ด๋‹ค.
์ˆœ์ฐจ์ ‘๊ทผ ( ์ž„์˜์ ‘๊ทผ) ์ˆœ์ฐจ์ ‘๊ทผ์€ ์˜›๋‚ ์— ์“ฐ๋˜ ๋น„๋””์˜คํ…Œ์ดํ”„๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ํŠน์ • ์œ„์น˜๊นŒ์ง€ ๊ฐˆ๋ ค๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•ด๋‹น ์œ„์น˜๊นŒ์ง€ ๋น„๋””์˜ค๋ฅผ ๋นจ๋ฆฌ๊ฐ๊ธฐํ•ด์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค. ๋‹น์—ฐํžˆ ์ž„์˜์ ‘๊ทผ๋ณด๋‹ค ๋น„ํšจ์œจ์ ์ด๋‹ค.

๋ฉ”๋ชจ๋ฆฌ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„

๋ฉ”๋ชจ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๊ธด ๋ ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋ฉ”๋ชจ๋ฆฌ ๋  ํ•œ ์นธ์ด ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ๋‹จ์œ„๋Š” byte ์ด๋‹ค.

ํŒŒ์ด์ฌ์—์„œ ๋ณ€์ˆ˜ ํ• ๋‹น์€ C์–ธ์–ด์™€ ๋‹ค๋ฅด๋‹ค

num = 5 print(num+5) # 10
Python
๋ณต์‚ฌ
ํŒŒ์ด์ฌ์€ C์–ธ์–ด์™€ ๋‹ค๋ฅด๊ฒŒ ๋ชจ๋“  ๋ณ€์ˆ˜๊ฐ€ ํฌ์ธํ„ฐ(๋ ˆํผ๋Ÿฐ์Šค)์ด๋‹ค.
ํŒŒ์ด์ฌ ๊ธฐ์ค€์œผ๋กœ num=95 ๋ฌธ์žฅ์€ num ์— 95 ๋ผ๋Š” ๊ฐ’์ด ๋“ค์–ด์˜ค๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, 95 int object๊ฐ€ ์ƒ์„ฑ๋œ ํ›„ 95๊ฐ€ ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.
๊ทธ๋ ‡์ง€๋งŒ, ์ด num ์„ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” num ๊ฐ’์— ์ฃผ์†Œ๊ฐ’์ด ๋“ค์–ด์˜ค๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ํŒŒ์ด์ฌ์ด ์•Œ์•„์„œ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•ด์„œ ์ €์žฅ๋œ ๊ฐ’์„ ๋ฐ›์•„์˜จ๋‹ค.
>>> a = 1 >>> b = 1 >>> print(id(a),id(b)) 140338459240752 140338459240752 >>> a = 2 >>> print(id(a),id(b)) # a ๋‚˜ b ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ์ง€์ •๋œ ๊ฐ’์„ ๋ฐ›์•„์˜ค๋ฏ€๋กœ ์‹ค์ œ a,b์ฃผ์†Œ๋ฅผ ์•Œ ์ˆ˜๋Š” ์—†๋‹ค. 140338459240784 140338459240752 >>> print(id(2), id(1)) 140338459240784 140338459240752
Python
๋ณต์‚ฌ
a์™€ b ๋Š” ๊ฐ™์€ ์ •์ˆ˜๊ฐ์ฒด(1) ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์˜€์ง€๋งŒ, a ๊ฐ€ 2๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜๋ฉด a ์—๋Š” 2 ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๋‹ด๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— a ์— ๋‹ด๊ธด ์ฃผ์†Œ๊ฐ’์ด ๋‹ฌ๋ผ์ง„๋‹ค.
์ด์™€ ๊ฐ™์ด ๋ณ€์ˆ˜๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์ด ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ, ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์กŒ๋‹ค๊ณ  ํ•ด์„œ ๋ชจ๋‘ ๋™์ผํ•œ object๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. (๋ฌผ๋ก  ๊ฐ™์€ object๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค. -5 ~ 256 ์‚ฌ์ด์˜ ์ˆซ์ž ๊ฐ์ฒด๋“ค์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฏธ๋ฆฌ ํ• ๋‹น๋˜์–ด ์žˆ๊ณ , ํ•ญ์ƒ ๋™์ผํ•œ id ๋ฅผ ๊ฐ€์ง„๋‹ค. )
>>> a = 12345 >>> b = 12345 >>> id(a) 23564368 >>> id(b) 23564584 # a ์™€ b ๋‘˜๋‹ค ๊ฐ™์€ ๊ฐ’(12345) ์ง€๋งŒ ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์ด๋‹ค. >>> a is b # ๊ฐ์ฒด ๋น„๊ต False >>> a == b # ๊ฐ’ ๋น„๊ต True
Python
๋ณต์‚ฌ
๋‚ด๊ฐ€ ๋‚ด๋ฆฐ ๊ฒฐ๋ก ์€ ํŒŒ์ด์ฌ์€ ๋ณ€์ˆ˜์— ๊ฐ’์ด ๋“ค์–ด์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ฐ์ฒด์— ๋ณ€์ˆ˜ ๊ผฌ๋ฆฌํ‘œ๊ฐ€ ๋‹ฌ๋ฆฐ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ๊ฐ™๋‹ค.
JS ์˜ immuatable ๊ฐ์ฒด์™€ mutalbe ๊ฐ์ฒด ์™€ ๊ฐ™์€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.
๊ฐ’ โ‰  ๊ฐ์ฒด