πŸ“•[μ±…] 쏙쏙 λ“€μ–΄μ˜€λŠ” ν•¨μˆ˜ν˜• μ½”λ”© - 12

rivolt0421Β·2023λ…„ 3μ›” 26일
0

πŸ“•μ±…

λͺ©λ‘ 보기
8/26

μš”μ•½

πŸ˜‡
데이터가 μ „λΆ€ λΆˆλ³€ν˜•μ΄λ©΄ μ‹œκ°„μ— 따라 λ³€ν•˜λŠ” μƒνƒœ (e.g. μž₯λ°”κ΅¬λ‹ˆ μƒνƒœ) λ₯Ό μ–΄λ–»κ²Œ λ‹€λ£° 수 μžˆλ‚˜?
-> 그럴 λ•ŒλŠ” 'ꡐ체(swapping)'λ₯Ό ν•œλ‹€.

λΆˆλ³€ 데이터 ꡬ쑰λ₯Ό μ‚¬μš©ν•˜λ©΄ λ‹Ήμ—°νžˆ λ©”λͺ¨λ¦¬λ₯Ό 더 많이 μ“°κ³  더 λŠλ¦¬λ‹€.
ν•˜μ§€λ§Œ,

  1. GCλŠ” 맀우 λΉ λ₯΄κ³ , 생각보닀 많이 볡사 ν•˜μ§€ μ•ŠλŠ”λ‹€.
    • 얕은 볡사, ꡬ쑰적 곡유
  2. ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ μ§€μ›ν•˜λŠ” λΆˆλ³€ 데이터 ꡬ쑰λ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.
    • 직접 λ§Œλ“  것 보닀 효율적. μ΅œλŒ€ν•œ λ§Žμ€ ꡬ쑰λ₯Ό κ³΅μœ ν•œλ‹€. 이 μ—­μ‹œ copy-on-write에 κΈ°λ°˜ν•œ κ΅¬ν˜„.
  3. μ–Έμ œλ“  μ΅œμ ν™” ν•˜λ©΄ λœλ‹€.
    • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ—μ„œ 병λͺ© 지점을 항상 μ˜ˆμƒμΉ˜ λͺ»ν•œ μ§€μ μ—μ„œ λ°œμƒ. 미리 μ΅œμ ν™” ν•˜κΈ° λ³΄λ‹€λŠ” 일단 λ§Œλ“€μ–΄ 놓고 느린 뢀뢄이 μžˆλ‹€λ©΄ κ·Έ λ•Œ μ΅œμ ν™”.

πŸ˜‡
객체에 λŒ€ν•œ copy-on-write
-> λ°°μ—΄κ³Ό λ™μΌν•œ 방식
1. 볡사본 λ§Œλ“€κΈ° 2. 볡사본 λ³€κ²½ν•˜κΈ° 3. 볡사본 λ¦¬ν„΄ν•˜κΈ°.

λ‹€λ§Œ, μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 객체λ₯Ό λ³΅μ‚¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” Object.assign() λ©”μ„œλ“œλ₯Ό ν™œμš©ν•œλ‹€.

발췌

얕은 볡사 (shallow copy)

μ€‘μ²©λœ 데이터 ꡬ쑰에 μ΅œμƒμœ„ λ°μ΄ν„°λ§Œ 볡사. 예λ₯Ό λ“€μ–΄, 객체λ₯Ό μ›μ†Œλ‘œ κ°€μ§€λŠ” 배열을 '얕은 볡사' ν•˜λ©΄, λ°°μ—΄λ§Œ λ³΅μ‚¬ν•˜κ³  μ•ˆμ— μžˆλŠ” κ°μ²΄λŠ” 참쑰둜 곡유.

ꡬ쑰적 곡유 (structural sharing)

두 개의 μ€‘μ²©λœ 데이터 ꡬ쑰가 μ–΄λ–€ μ°Έμ‘°λ₯Ό κ³΅μœ ν•œλ‹€λ©΄, 'ꡬ쑰적 곡유' 라고 ν•œλ‹€.

λ©”λͺ¨

  • ꡬ쑰적 κ³΅μœ λŠ” μ°Έμ‘°λ₯Ό κ³΅μœ ν•˜λŠ”λ°, 이 λ•Œ λ°œμƒν•  수 μžˆλŠ” 데이터 λ³€κ²½μ˜ μœ„ν—˜μ€ μ—†μ„κΉŒ?
    • λΆˆλ³€ 데이터 ꡬ쑰 ν•˜μ—μ„œ ꡬ쑰적 κ³΅μœ λŠ” μ•ˆμ „ν•˜λ‹€. μ–΄μ°Œ 됐든 μ°Έμ‘°λ₯Ό 톡해 직접 'μ“°κΈ°'λ₯Ό ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€.
      예λ₯Ό λ“€μ–΄, 객체듀을 κ°€μ§€λŠ” 배열을 얕은 λ³΅μ‚¬ν•˜μ—¬ ꡬ쑰적 곡유λ₯Ό ν•œ ν›„, λ³΅μ‚¬λœ λ°°μ—΄μ˜ μ›μ†Œ 쀑 ν•˜λ‚˜μ˜ 객체λ₯Ό λ³€κ²½ν•œλ‹€κ³  ν•΄λ³΄μž. 이 λ•Œλ„, κ·Έ 객체λ₯Ό λ‹€μ‹œ λ³΅μ‚¬ν•˜κ³  -> κ·Έ 볡사본을 λ³€κ²½ν•˜κ³  -> λ³€κ²½λœ 볡사본을 μ›λž˜ 객체의 μžλ¦¬μ— ν• λ‹Ήν•˜λ©΄μ„œ 'ꡐ체'ν•˜κΈ° λ•Œλ¬Έμ— 데이터 λ³€κ²½μ˜ μœ„ν—˜μ΄ μ—†λ‹€.
profile
I think I think too much.

0개의 λŒ“κΈ€