--- id: P-REINFORCE-AUTO-4A99EB category: "10_Wiki/πŸ’‘ Topics/Graphics & Performance" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - JavaScript" --- # [[JavaScript|JavaScript]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > JavaScriptλŠ” 단일 νŽ˜μ΄μ§€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μΆ•ν•˜κ³  WebGL, WebGPU와 같은 μ›Ή λΈŒλΌμš°μ € APIλ₯Ό μ œμ–΄ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” 핡심 μŠ€ν¬λ¦½νŒ… μ–Έμ–΄μž…λ‹ˆλ‹€ [1, 2]. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 둜직, 이벀트 처리 및 데이터 쀀비에 ν•„μˆ˜μ μ΄μ§€λ§Œ, λΈŒλΌμš°μ €μ˜ 메인 μŠ€λ ˆλ“œμ—μ„œ 무거운 JavaScriptλ₯Ό μ‹€ν–‰ν•˜κ±°λ‚˜ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ΄ λ°œμƒν•˜λ©΄ μ‹¬κ°ν•œ μ„±λŠ₯ 병λͺ© ν˜„μƒμ΄ 생길 수 μžˆμŠ΅λ‹ˆλ‹€ [3-5]. λ”°λΌμ„œ 졜근의 μ›Ή μ„±λŠ₯ μ΅œμ ν™”λŠ” JavaScript νŽ˜μ΄λ‘œλ“œλ₯Ό 쀄이고, μ‹€ν–‰ μ‹œκ°„μ„ λΆ„ν• ν•˜λ©°, 무거운 연산을 GPU둜 μ˜€ν”„λ‘œλ“œν•˜λŠ” λ°©ν–₯으둜 λ°œμ „ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [6, 7]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **μ›Ή κ·Έλž˜ν”½(WebGL 및 WebGPU)μ—μ„œμ˜ μ—­ν• :** JavaScriptλŠ” λΈŒλΌμš°μ €μ˜ WebGL 및 WebGPU API와 μƒν˜Έ μž‘μš©ν•˜κΈ° μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€ μ–Έμ–΄μž…λ‹ˆλ‹€ [2, 8]. WebGL ν™˜κ²½μ—μ„œ JavaScript ν”„λ‘œκ·Έλž¨μ€ CPUμ—μ„œ μ‹€ν–‰λ˜λ©°, 3D λͺ¨λΈ 데이터 λ³€ν™˜, 버퍼 객체 생성, μœ λ‹ˆνΌ(Uniform) λ³€μˆ˜ μ„€μ • 및 λ“œλ‘œμš° 콜(Draw call) λ°œν–‰ λ“±μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€ [9, 10]. κ·ΈλŸ¬λ‚˜ JavaScript ν”„λ‘œκ·Έλž¨κ³Ό GPU κ°„μ˜ λΉˆλ²ˆν•œ 톡신 및 λΈŒλΌμš°μ € API ν˜ΈμΆœμ€ λ Œλ”λ§ 속도λ₯Ό μ €ν•˜μ‹œν‚€λŠ” 큰 μ˜€λ²„ν—€λ“œλ₯Ό λ°œμƒμ‹œν‚΅λ‹ˆλ‹€ [11, 12]. μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ“±μž₯ν•œ WebGPUλŠ” μ• λ‹ˆλ©”μ΄μ…˜μ΄λ‚˜ μ •λ ¬κ³Ό 같은 λ‘œμ§μ„ GPU의 μ»΄ν“¨νŠΈ 셰이더(Compute shader)둜 직접 μ˜€ν”„λ‘œλ“œν•˜μ—¬ JavaScript λŸ°νƒ€μž„μœΌλ‘œ μΈν•œ 메인 μŠ€λ ˆλ“œ 병λͺ© ν˜„μƒμ„ 획기적으둜 μ€„μ—¬μ€λ‹ˆλ‹€ [6, 13, 14]. * **μ„±λŠ₯ 영ν–₯ 및 μ΅œμ ν™”:** JavaScript 싀행은 INP(Interaction to Next Paint) 및 TBT(Total Blocking Time)와 같은 μ½”μ–΄ μ›Ή λ°”μ΄νƒˆ(Core Web Vitals) μ„±λŠ₯ μ§€ν‘œμ— 직접적인 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€ [7, 15]. 메인 μŠ€λ ˆλ“œλ₯Ό 50ms 이상 μ°¨λ‹¨ν•˜λŠ” κΈ΄ μž‘μ—…(Long tasks)은 μ‚¬μš©μž μƒν˜Έ μž‘μš©μ— λŒ€ν•œ 응닡을 μ§€μ—°μ‹œν‚΅λ‹ˆλ‹€ [7]. λ˜ν•œ, JavaScript의 κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(Garbage Collection) ν”„λ‘œμ„ΈμŠ€λŠ” κ°œλ°œμžκ°€ μ œμ–΄ν•  수 μ—†λŠ” μ‹œμ μ— μΌμ‹œ 쀑지λ₯Ό μœ λ°œν•˜μ—¬ λ Œλ”λ§ λŠκΉ€(Stutter)μ΄λ‚˜ λΆˆκ·œμΉ™ν•œ ν”„λ ˆμž„ 속도λ₯Ό λ°œμƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€ [4, 8]. 이λ₯Ό μ΅œμ ν™”ν•˜κΈ° μœ„ν•΄ κ°œλ°œμžλŠ” κΈ΄ μž‘μ—…μ„ 더 μž‘μ€ 비동기 청크둜 λΆ„ν• ν•˜κ³ , ν•„μˆ˜μ μ΄μ§€ μ•Šμ€ JSλ₯Ό μ§€μ—° λ‘œλ“œ(Defer/Lazy load)ν•˜λ©°, κ°€λΉ„μ§€κ°€ μ—†λŠ”(garbage-free) μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€ [7, 16, 17]. * **μ„±λŠ₯ λͺ¨λ‹ˆν„°λ§ 및 디버깅:** Chrome DevTools의 μ„±λŠ₯(Performance) νŒ¨λ„μ€ JavaScript μ„±λŠ₯을 ν”„λ‘œνŒŒμΌλ§ν•˜λŠ” 데 ν•„μˆ˜μ μΈ λ„κ΅¬μž…λ‹ˆλ‹€ [3]. 이 도ꡬλ₯Ό 톡해 κ°œλ°œμžλŠ” 메인 μŠ€λ ˆλ“œ ν™œλ™μ˜ ν”Œλ ˆμž„ 차트(Flame chart)λ₯Ό λΆ„μ„ν•˜κ³ , JavaScript ν•¨μˆ˜μ˜ μ„ΈλΆ€ 호좜 μŠ€νƒμ„ ν™•μΈν•˜λ©°, κ°•μ œ 동기식 λ ˆμ΄μ•„μ›ƒ(Forced synchronous layouts)을 μœ λ°œν•˜κ±°λ‚˜ μƒν˜Έ μž‘μš© 처리λ₯Ό μ§€μ—°μ‹œν‚€λŠ” νŠΉμ • 슀크립트λ₯Ό 식별할 수 μžˆμŠ΅λ‹ˆλ‹€ [3, 18, 19]. λ˜ν•œ, Long Animation Frames APIλ₯Ό 기반으둜 μ‚¬μš©μž μƒν˜Έ μž‘μš©μ„ μ§€μ—°μ‹œν‚€λŠ” 슀크립트의 λ ˆμ΄μ•„μ›ƒ μž‘μ—… 및 μŠ€ν¬λ¦½νŒ… μž‘μ—… λΉ„μœ¨μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€ [20]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Graphics & Performance λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** `[[WebGL|WebGL]]`, `[[WebGPU|WebGPU]]`, `[[Interaction to Next Paint (INP)|Interaction to Next Paint (INP)]]`, `[[Garbage Collection|Garbage Collection]]`, `[[Chrome DevTools|Chrome DevTools]]` - **Projects/Contexts:** `[[Three.js|Three.js]]`, `μ›Ή κ·Έλž˜ν”½ μ„±λŠ₯ μ΅œμ ν™”(Web Graphics Performance Optimization)` - **Contradictions/Notes:** WebGL을 κ΅¬λ™ν•˜κΈ° μœ„ν•΄ JavaScriptλŠ” ν•„μˆ˜μ μ΄μ§€λ§Œ, CPU 츑의 JavaScript μ‹€ν–‰ 및 μƒνƒœ μœ νš¨μ„± 검사 μ˜€λ²„ν—€λ“œκ°€ 였히렀 λ Œλ”λ§ μ„±λŠ₯을 μ œν•œν•˜λŠ” κ°€μž₯ 큰 병λͺ©μœΌλ‘œ μž‘μš©ν•©λ‹ˆλ‹€. 이둜 인해 3D λ Œλ”λ§ 산업은 JavaScript의 κ°œμž…μ„ 쀄이고 GPU의 병렬 연산을 κ·ΉλŒ€ν™”ν•  수 μžˆλŠ” WebGPU둜 λΉ λ₯΄κ²Œ μ „ν™˜ν•˜λŠ” μΆ”μ„Έμž…λ‹ˆλ‹€ [5, 6, 13]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/JavaScript.md ---