HTML5 Canvas 실시간 드로잉 성능 최적화 가이드

Source

  • Evernote/ancom21c's notebook/Fluent 2016 Tutoral 2 - Real-Time drawing with HTML5 Canvas.md

Summary

이 문서는 HTML5 Canvas를 사용한 실시간 드로잉 애플리케이션의 성능 최적화를 위한 실용적인 팁을 나열한다. 주요 내용으로는 상태 변경(색상 등) 최소화, requestAnimationFrame 사용, 변경된 영역만 다시 그리기, 캐싱 활용, 텍스트 렌더링 및 이미지 리사이징 피하기, 다중 캔버스 사용, 그리고 성능 측정(JSPerf)의 중요성을 강조한다. 또한 translate 함수의 성능 오버헤드와 fillRect 대비 rect + fill의 효율성, 검증된 라이브러리 또는 WebGL 활용을 권고한다.

Key Points

  • Canvas 상태 변경(색상, 변환 등)을 최소화하여 성능 저하 방지
  • 애니메이션 루프에 setInterval 대신 requestAnimationFrame 사용
  • 전체 화면이 아닌 변경된 부분만 다시 그리기(Dirty Rect)
  • 정적 요소 캐싱 및 다중 캔버스 레이어 활용
  • 텍스트 렌더링, 이미지 크기 변경, 소수점 좌표 사용 피하기
  • 성능 측정 도구(JSPerf) 활용 및 검증된 라이브러리/WebGL 고려