--- id: P-REINFORCE-AUTO-BB908E category: "[[10_Wiki/πŸ’‘ Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - λŒ€κ·œλͺ¨ 데이터 λ Œλ”λ§ 및 가상화 μ΅œμ ν™”" --- # [[λŒ€κ·œλͺ¨ 데이터 λ Œλ”λ§ 및 가상화 μ΅œμ ν™”]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > λŒ€κ·œλͺ¨ λ¦¬μŠ€νŠΈλ‚˜ ν…Œμ΄λΈ”μ„ λ Œλ”λ§ν•  λ•Œ λ°œμƒν•˜λŠ” DOM λ…Έλ“œ 폭증과 λ©”λͺ¨λ¦¬ λΆ€μ‘±, ν”„λ ˆμž„ μ €ν•˜ ν˜„μƒμ„ λ°©μ§€ν•˜κΈ° μœ„ν•΄, 전체 데이터 쀑 ν˜„μž¬ ν™”λ©΄(Viewport)에 λ³΄μ΄λŠ” ν•­λͺ©κ³Ό μ•½κ°„μ˜ μ—¬λΆ„(Buffer)λ§Œμ„ λ™μ μœΌλ‘œ λ§ˆμš΄νŠΈν•˜μ—¬ λ Œλ”λ§ν•˜λŠ” μ„±λŠ₯ μ΅œμ ν™” κΈ°λ²•μž…λ‹ˆλ‹€. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) **1. λŒ€κ·œλͺ¨ λ Œλ”λ§μ˜ μ„±λŠ₯ 병λͺ© 원인** 수천, 수만 개의 ν•­λͺ©(예: 10,000개 μ΄μƒμ˜ 리슀트)을 ν•œ λ²ˆμ— λ Œλ”λ§ν•˜λ©΄ DOM λ…Έλ“œκ°€ κΈ°ν•˜κΈ‰μˆ˜μ μœΌλ‘œ λŠ˜μ–΄λ‚˜ λΈŒλΌμš°μ €κ°€ λ©ˆμΆ”κ±°λ‚˜(Freezing), λ ˆμ΄μ•„μ›ƒ 계산 및 νŽ˜μΈνŒ… μž‘μ—…μ΄ 맀우 λŠλ €μ§‘λ‹ˆλ‹€. λ˜ν•œ React의 μž¬μ‘°μ •(Reconciliation) μ•Œκ³ λ¦¬μ¦˜μ΄ λͺ¨λ“  ν•­λͺ©μ„ λΉ„κ΅ν•˜λ € ν•˜λ―€λ‘œ CPU μ˜€λ²„ν—€λ“œμ™€ μ‹¬κ°ν•œ ν”„λ ˆμž„ λ“œλžμ΄ λ°œμƒν•˜κ²Œ λ©λ‹ˆλ‹€. **2. 가상화(Windowing/Virtualization)의 μž‘λ™ 원리 및 효과** κ°€μƒν™”λŠ” 전체 λ°°μ—΄ 쀑 ν˜„μž¬ 화면에 λ…ΈμΆœλ˜λŠ” ν•­λͺ©λ§Œμ„ DOM에 마운트(λ Œλ”λ§)ν•˜κ³ , μŠ€ν¬λ‘€ν•  λ•Œλ§ˆλ‹€ μƒˆλ‘­κ²Œ λ³΄μ΄λŠ” ν•­λͺ©μ„ μƒμ„±ν•˜λ©° 화면을 λ²—μ–΄λ‚œ ν•­λͺ©μ€ μ–Έλ§ˆμš΄νŠΈν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. 이λ₯Ό μ μš©ν•˜λ©΄ 10,000개의 ν•­λͺ©μ΄ μžˆμ–΄λ„ μ‹€μ œ DOMμ—λŠ” μˆ˜μ‹­ 개만 μ‘΄μž¬ν•˜κ²Œ λ˜μ–΄ λ Œλ”λ§ μ†Œμš” μ‹œκ°„μ„ μ•½ 1,200msμ—μ„œ 50ms μˆ˜μ€€μœΌλ‘œ λ‹¨μΆ•ν•˜κ³  λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ„ μ΅œλŒ€ 97%κΉŒμ§€ μ ˆκ°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. **3. μ•ˆμ •μ μΈ μ‹λ³„μž(Key)의 μ€‘μš”μ„±** λŒ€κ·œλͺ¨ 리슀트λ₯Ό μ΅œμ ν™”ν•  λ•ŒλŠ” ν•­λͺ©μ˜ μΆ”κ°€, μ‚­μ œ, μž¬μ •λ ¬ μ‹œ λΆˆν•„μš”ν•œ μž¬μƒμ„±μ„ λ§‰λŠ” 것이 ν•΅μ‹¬μž…λ‹ˆλ‹€. λ°°μ—΄μ˜ 인덱슀(index)λ₯Ό `key`둜 μ‚¬μš©ν•˜λ©΄ ν•­λͺ© μˆœμ„œκ°€ λ°”λ€” λ•Œ Reactκ°€ ν•­λͺ©μ„ 잘λͺ» μ‹λ³„ν•˜μ—¬ λŒ€κ·œλͺ¨ λ¦¬λ Œλ”λ§μ΄λ‚˜ λ―Έμ„Έν•œ 버그가 λ°œμƒν•  수 μžˆμœΌλ―€λ‘œ, λ°˜λ“œμ‹œ κ³ μœ ν•˜κ³  μ•ˆμ •μ μΈ `key`λ₯Ό λΆ€μ—¬ν•΄μ•Ό ν•©λ‹ˆλ‹€. **4. μ£Όμš” 가상화 라이브러리 λ„μž…** μ΄λŸ¬ν•œ λ³΅μž‘ν•œ λ‘œμ§μ„ 직접 κ΅¬ν˜„ν•˜κΈ°λ³΄λ‹€λŠ” κ²€μ¦λœ 라이브러리λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 ꢌμž₯λ©λ‹ˆλ‹€. - **`react-window`**: 가볍고 μ„±λŠ₯이 λ›°μ–΄λ‚œ κ°€μž₯ 보편적인 가상화 λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€. - **`react-virtualized`**: ν…Œμ΄λΈ”μ΄λ‚˜ κ·Έλ¦¬λ“œ λ“± 보닀 κ³ κΈ‰ κΈ°λŠ₯이 ν¬ν•¨λ˜μ–΄ μžˆμœΌλ‚˜ μƒλŒ€μ μœΌλ‘œ λ¬΄κ²μŠ΅λ‹ˆλ‹€. - **`TanStack Virtual`**: ν”„λ ˆμž„μ›Œν¬μ— ꡬ애받지 μ•ŠλŠ” μ΅œμ‹  API ꡬ쑰λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. **5. 적용 μ‹œ μ£Όμ˜μ‚¬ν•­ 및 ν•œκ³„μ ** κ°€μƒν™”λŠ” 만λŠ₯이 μ•„λ‹ˆλ©° ν”Όν•΄μ•Ό ν•  상황이 μ‘΄μž¬ν•©λ‹ˆλ‹€. - 리슀트 ν•­λͺ©μ΄ 20개 미만인 μ†Œκ·œλͺ¨ λ¦¬μŠ€νŠΈμ—μ„œλŠ” 가상화 μ—°μ‚° μ˜€λ²„ν—€λ“œκ°€ 더 클 수 μžˆμœΌλ―€λ‘œ λ„μž…ν•˜μ§€ μ•ŠλŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. - λΈŒλΌμš°μ €μ˜ κΈ°λ³Έ 검색(Ctrl+F) κΈ°λŠ₯으둜 λͺ¨λ“  μ½˜ν…μΈ λ₯Ό μ°Ύμ•„μ•Ό ν•˜κ±°λ‚˜, SEOκ°€ μ€‘μš”ν•œ 정적 μ½˜ν…μΈ , μΈμ‡„μš© νŽ˜μ΄μ§€μ—λŠ” κ°€μƒν™”λœ ν•­λͺ©μ΄ DOM에 μ‘΄μž¬ν•˜μ§€ μ•Šμ•„ μž‘λ™ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μ μš©μ„ ν”Όν•΄μ•Ό ν•©λ‹ˆλ‹€. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[React Performance Optimization]], [[μž¬μ‘°μ • (Reconciliation)]], [[λΆˆν•„μš”ν•œ λ¦¬λ Œλ”λ§ λ°©μ§€]] - **Projects/Contexts:** [[μž₯κΈ° μ‹€ν–‰λ˜λŠ” μ‹€μ‹œκ°„ 데이터 λŒ€μ‹œλ³΄λ“œ μ΅œμ ν™”]], [[λŒ€κ·œλͺ¨ 둜그 λ·°μ–΄ 및 데이터 ν…Œμ΄λΈ” κ΅¬ν˜„]], [[이컀머슀 λ¬΄ν•œ 슀크둀 μƒν’ˆ 리슀트]] - **Contradictions/Notes:** 50~100개 μ΄μƒμ˜ λŒ€κ·œλͺ¨ λ¦¬μŠ€νŠΈλ‚˜ λ¬΄ν•œ 슀크둀 ν™˜κ²½μ—μ„œλŠ” 가상화가 ν•„μˆ˜μ μ΄μ§€λ§Œ, ν•­λͺ©μ˜ 높이가 제각각인 κ°€λ³€ 높이 ν•­λͺ©(Variable height items)을 λ Œλ”λ§ν•  λ•ŒλŠ” λ Œλ”λ§ μ „ 각 ν•­λͺ©μ˜ 크기λ₯Ό μΈ‘μ •(Measurement)ν•˜λŠ” 단계가 ν•„μš”ν•˜μ—¬ κ΅¬ν˜„μ΄ 훨씬 λ³΅μž‘ν•΄μ§‘λ‹ˆλ‹€. λ”°λΌμ„œ 가급적 리슀트 ν•­λͺ©μ˜ 높이λ₯Ό μΌμ •ν•˜κ²Œ μ„€κ³„ν•˜λŠ” 것이 μ„±λŠ₯κ³Ό κ΅¬ν˜„ μΈ‘λ©΄μ—μ„œ 훨씬 μœ λ¦¬ν•©λ‹ˆλ‹€. --- _Last updated: 2026-04-15_ - Raw Source: [[00_Raw/2026-04-20/λŒ€κ·œλͺ¨ 데이터 λ Œλ”λ§ 및 가상화 μ΅œμ ν™”.md]] ---