You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
측정 전 진단 설계입니다. 아래 절차로 긴 드래그 상황을 재현한 뒤, 실제 trace와 수치를 추가합니다.
배경
메인 Hero의 Canvas 기반 스프레이는 긴 드래그에서 버벅임이 관찰되었습니다. 원인이 JavaScript·Canvas draw call 중심의 CPU 병목인지, 투명도 합성 및 대형 Canvas 버퍼 중심의 GPU 부담인지, 혹은 객체 생성과 GC에 의한 메모리 문제인지 분리해 확인합니다.
목표는 단순히 효과를 축소하는 것이 아니라, 디자인 의도를 유지한 채 어떤 비용이 프레임 드롭을 만드는지 근거를 확보하는 것입니다.
현재 구현 가설
후보
현재 구조에서의 근거
확인 방법
CPU scripting
스탬프마다 입자 배열을 순회하며 arc()를 반복 호출
Performance Main thread에서 Scripting·함수 self time 확인
CPU paint / raster
Hero 전체 Canvas를 매 프레임 clearRect() 후 재도포
Frames·Main thread의 Paint/Raster 시간 확인
GPU compositing
DPR 2 Canvas와 반투명 입자를 대형 Hero 이미지 위에서 알파 합성
Performance GPU track, Chrome Task Manager GPU memory 추이 확인
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
상태
측정 전 진단 설계입니다. 아래 절차로 긴 드래그 상황을 재현한 뒤, 실제 trace와 수치를 추가합니다.
배경
메인 Hero의 Canvas 기반 스프레이는 긴 드래그에서 버벅임이 관찰되었습니다. 원인이 JavaScript·Canvas draw call 중심의 CPU 병목인지, 투명도 합성 및 대형 Canvas 버퍼 중심의 GPU 부담인지, 혹은 객체 생성과 GC에 의한 메모리 문제인지 분리해 확인합니다.
목표는 단순히 효과를 축소하는 것이 아니라, 디자인 의도를 유지한 채 어떤 비용이 프레임 드롭을 만드는지 근거를 확보하는 것입니다.
현재 구현 가설
arc()를 반복 호출Scripting·함수 self time 확인clearRect()후 재도포예상 비용 모델
현재 스탬프는 중심 타원과 주변 입자로 구성됩니다. 장시간 드래그에서는 일정 시간 안에 생성된 모든 스탬프가 매 프레임 다시 그려집니다. 따라서 활성 스탬프 수와 입자 수의 곱이 Canvas 명령 수를 결정합니다.
개수로 경로를 강제로 자르는 방식은 시각적으로 꼬리가 잘려 보이는 문제를 만들었으므로, 성능 경계는 고정 길이 절단이 아니라 측정 결과를 바탕으로 입력 샘플링·브러시 캐싱·생명주기를 조합해 설정합니다.
재현 시나리오
공통 환경
prefers-reduced-motion비활성화, 정밀 포인터 환경/메인 Hero시나리오 A — 기준선
시나리오 B — 일반 분사
시나리오 C — 최악 조건
시나리오 D — 저사양 근사
측정 도구와 기록 항목
1. Chrome DevTools Performance
pointermoveinteraction의 input delay·processing·presentation delay2. Chrome Task Manager / Performance Monitor
Canvas 구현에서는 DOM Node·Layout 증가가 낮아야 하며, 문제 발생 시 CPU·GPU·JS memory가 함께 어떤 형태로 변하는지 확인합니다.
3. Memory 패널
성공 기준
결과에 따른 의사결정
CPU draw call이 병목이면
arc()대신drawImage()1회 중심으로 렌더링GPU 합성이 병목이면
GC / 메모리가 병목이면
모든 지표가 허용 범위이면
산출물
before/afterChrome Performance trace (.json.gz)관련 기록
All reactions