--- id: [[P-Reinforce]]-AUTO-777FEC category: "10_Wiki/πŸ’‘ Topics/Graphics & Performance" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - [[React 19]] Compiler의 [[Threejs]] λŸ°νƒ€μž„ μ„±λŠ₯ κ°œμ„  원리" --- # [[React 19 Compiler의 Threejs λŸ°νƒ€μž„ μ„±λŠ₯ κ°œμ„  원리]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > React 19 μ»΄νŒŒμΌλŸ¬λŠ” λΉŒλ“œ νƒ€μž„μ— μ½”λ“œμ˜ κ°’, μ»΄ν¬λ„ŒνŠΈ, 콜백 ν•¨μˆ˜λ₯Ό μžλ™μœΌλ‘œ λ©”λͺ¨μ΄μ œμ΄μ…˜ν•˜μ—¬ μž¦μ€ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(GC)κ³Ό λΆˆν•„μš”ν•œ λ¦¬λ Œλ”λ§μ„ μ°¨λ‹¨ν•¨μœΌλ‘œμ¨, React Three Fiber(R3F) 기반 3D κ²Œμž„μ˜ ν”„λ ˆμž„ 레이트(FPS)λ₯Ό μ•ˆμ •ν™”ν•˜κ³  λŸ°νƒ€μž„ μ„±λŠ₯을 획기적으둜 κ°œμ„ ν•©λ‹ˆλ‹€. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) **1. μžλ™ μ°Έμ‘° μ•ˆμ •μ„±([[Reference]] [[Stability]]) 확보λ₯Ό ν†΅ν•œ λ¦¬λ Œλ”λ§ λ°©μ§€** React ν™˜κ²½μ—μ„œλŠ” λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈμ˜ μƒνƒœκ°€ λ³€ν•  λ•Œλ§ˆλ‹€ ν•˜μœ„ μ»΄ν¬λ„ŒνŠΈλ“€μ΄ 기본적으둜 λͺ¨λ‘ λ¦¬λ Œλ”λ§λ©λ‹ˆλ‹€. 특히 인라인 ν•¨μˆ˜λ‚˜ 객체가 λ§€ λ Œλ”λ§λ§ˆλ‹€ μƒˆλ‘œμš΄ μ°Έμ‘°(Reference)λ₯Ό μƒμ„±ν•˜λ©΄, ν•˜μœ„μ— μžˆλŠ” 무거운 3D μ»΄ν¬λ„ŒνŠΈ(Mesh, Material λ“±)κ°€ λΆˆν•„μš”ν•˜κ²Œ λ Œλ”λ§μ„ λ°˜λ³΅ν•˜κ²Œ λ©λ‹ˆλ‹€. React 19 μ»΄νŒŒμΌλŸ¬λŠ” `useMemo`λ‚˜ `useCallback` 없이도 μ•ˆμ „ν•œ λͺ¨λ“  곳에 λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ μžλ™ μ μš©ν•˜μ—¬ μ°Έμ‘° μ•ˆμ •μ„±μ„ 확보해 μ£Όλ―€λ‘œ, 무거운 3D 객체의 λ¬΄μ˜λ―Έν•œ μž¬μƒμ„±μ„ λ§‰μ•„μ€λ‹ˆλ‹€. **2. κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(GC) 슀파이크 μ–΅μ œ** μ‹€μ‹œκ°„ 3D κ²Œμž„μ—μ„œ κ°€μž₯ 치λͺ…적인 μ„±λŠ₯ μ €ν•˜ 원인 쀑 ν•˜λ‚˜λŠ” 단기간에 μˆ˜λ§Žμ€ 객체가 μƒμ„±λ˜κ³  λ²„λ €μ§€λ©΄μ„œ λ°œμƒν•˜λŠ” κ°€λΉ„μ§€ μ»¬λ ‰μ…˜ 멈좀([[Stop-the-world]]) ν˜„μƒμž…λ‹ˆλ‹€. μ»΄νŒŒμΌλŸ¬κ°€ μ—°μ‚° 결과와 콜백 ν•¨μˆ˜λ₯Ό μžλ™μœΌλ‘œ μΊμ‹±ν•˜λ©΄ λ Œλ”λ§λ§ˆλ‹€ λ²„λ €μ§€λŠ” 객체의 생성이 크게 쀄어듀어, λ©”λͺ¨λ¦¬ νŒŒνŽΈν™” 및 GC둜 μΈν•œ ν”„λ ˆμž„ λ“œλž(Lag)을 효과적으둜 μ–΅μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€. **3. μž¬μ‘°μ •([[Reconciliation]]) μ˜€λ²„ν—€λ“œ κ°μ†Œλ‘œ 메인 μŠ€λ ˆλ“œ 확보** React의 가상 DOM 트리λ₯Ό λΉ„κ΅ν•˜λŠ” μž¬μ‘°μ •(Reconciliation) 과정은 CPU μ—°μ‚° λΉ„μš©μ΄ λ†’μŠ΅λ‹ˆλ‹€. 컴파일러 적용 μ‹œ 순수 μ»΄ν¬λ„ŒνŠΈμ˜ 90% 이상, μ—°μ‚° κ°’μ˜ 85% 이상이 μžλ™μœΌλ‘œ μΊμ‹±λ˜μ–΄ λ Œλ”λ§ μ†Œμš” μ‹œκ°„μ΄ λ‹¨μΆ•λ©λ‹ˆλ‹€. 덕뢄에 메인 μŠ€λ ˆλ“œμ˜ λΆ€ν•˜κ°€ 쀄어듀어, κ²Œμž„ 루프가 물리 μ—”μ§„ μ—°μ‚°μ΄λ‚˜ λ Œλ”λ§ 둜직 μ²˜λ¦¬μ— 더 λ§Žμ€ μžμ›μ„ μ˜¨μ „νžˆ μ‚¬μš©ν•  수 있게 λ©λ‹ˆλ‹€. **4. μˆ˜λ™ μ΅œμ ν™”μ˜ ν•œκ³„ 및 휴먼 μ—λŸ¬ 극볡** κ³Όκ±°μ—λŠ” λ³΅μž‘ν•œ 3D 씬을 ꡬ성할 λ•Œ κ°œλ°œμžκ°€ 직접 λͺ¨λ“  μ˜μ‘΄μ„± 배열을 κ΄€λ¦¬ν•˜λ©° μˆ˜λ™μœΌλ‘œ λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ ν•΄μ•Ό ν–ˆκ³ , 이 κ³Όμ •μ—μ„œ μ‹€μˆ˜κ°€ λ°œμƒν•˜κΈ° μ‰¬μ› μŠ΅λ‹ˆλ‹€. μ»΄νŒŒμΌλŸ¬λŠ” μ΄λŸ¬ν•œ λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈ μ½”λ“œλ₯Ό μ œκ±°ν•˜κ³  λΉŒλ“œ νƒ€μž„μ— μ΅œμ ν™”λ₯Ό 보μž₯ν•˜λ―€λ‘œ, κ°œλ°œμžλŠ” λ―Έμ„Έν•œ λ©”λͺ¨μ΄μ œμ΄μ…˜μ— μ‹ κ²½ μ“°λŠ” λŒ€μ‹  Three.js 씬 κ·Έλž˜ν”„ μ΅œμ ν™” λ“± 근본적인 μ—”μ§„ μ•„ν‚€ν…μ²˜μ— 더 집쀑할 수 μžˆμŠ΅λ‹ˆλ‹€. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Graphics & Performance λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[React 19 Compiler]], [[React Three Fiber (R3F)]], κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(GC) μ΅œμ ν™”, [[λΆˆν•„μš”ν•œ λ¦¬λ Œλ”λ§ λ°©μ§€]] - **Projects/Contexts:** κ³ μ„±λŠ₯ μ‹€μ‹œκ°„ μƒν˜Έμž‘μš© μ‹œμŠ€ν…œμ„ μœ„ν•œ React 기반 κ²Œμž„ μ—”μ§„ μ•„ν‚€ν…μ²˜ - **Contradictions/Notes:** React 19 μ»΄νŒŒμΌλŸ¬κ°€ 선언적 UI의 λ¦¬λ Œλ”λ§ μ„±λŠ₯을 λΉ„μ•½μ μœΌλ‘œ λ†’μ—¬μ£Όμ§€λ§Œ, κ²Œμž„μ˜ 근본적인 μ•ˆν‹° νŒ¨ν„΄κΉŒμ§€ ν•΄κ²°ν•΄ μ£Όμ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ§€ ν”„λ ˆμž„ μ‹€ν–‰λ˜λŠ” `useFrame` 루프 λ‚΄λΆ€μ—μ„œ React μƒνƒœ(`set[[State]]`)λ₯Ό μ—…λ°μ΄νŠΈν•˜κ±°λ‚˜ 객체λ₯Ό μƒˆλ‘œ 생성(`new Vector3()`)ν•˜λŠ” 것은 μ—¬μ „νžˆ 치λͺ…μ μž…λ‹ˆλ‹€. λΉˆλ²ˆν•˜κ²Œ λ³€ν•˜λŠ” 3D 객체의 μœ„μΉ˜λ‚˜ νšŒμ „κ°’ 등은 μ»΄νŒŒμΌλŸ¬μ— μ˜μ‘΄ν•  것이 μ•„λ‹ˆλΌ, λ°˜λ“œμ‹œ μ°Έμ‘°(Ref)λ₯Ό μ‚¬μš©ν•˜μ—¬ 직접 λ³€ν˜•(Direct Mutation)ν•΄μ•Ό ν•©λ‹ˆλ‹€. --- _Last updated: 2026-04-15_ ---