브라우저 렌더링 - Reflow와 Repaint 애니메이션 성능 비교

Wonjun Hwang
Wonjun HwangCEO @Kit Works Inc. à Kit Works inc.
윤정빈
브라우저 렌더링 과정의 Reflow와 Repaint
CSS 애니메이션 성능 비교
Width 증가
!
Width를 고정하고 left 속성으로 위치를 변경
Transform: scaleX() 증가
주제 선정 이유
같은 애니메이션을 여러 방법으로 구현해보면서 성능 차이가 궁금했음
브라우저 구조
User Interface
Browser engine
Rendering engine
Networking Javascript engine UI Backend
Data
Persistence
브라우저 렌더링 과정
HTML Text
CSS
Stylesheet
Text
DOM Tree
CSSOM
Style
(Render Tree)
Layout Paint Composite
Style: 요소에 적용할 스타일 계산
Layout: 레이어를 생성하여 화면에 각 요소가 어떻게 위치할 지 계산하여 화면에 배치
Paint: 생성된 레이아웃에 픽셀을 추가하여 화면에 그리는 과정
Composite: 생성한 레이어 계층을 합성. 이 계층을 내려다보면 모든 요소가 고유한 위치(복합 계층)를 갖는
완전한 웹 페이지로 보여짐
애니메이션을 위한 GPU 사용
Composite
CPU가 애니메이션을 처리하기 위해 GPU와 통신하는 단계
Transform, opacity 와 같은 속성을 사용
GPU
애니메이션을 처리하는 또 다른 작은 기계
많은 UI 계산 처리가 가능
Style Layout Paint Composite
CPU 대신 GPU를 사용해 웹 브라우저가 애니메이션 수행(하드웨어 가
새 레이어 생성
( UI요소의 애니메이션과 아닌 부분을 나눠 다시 렌더링 하지 않기 위
Reflow
생성된 DOM 노드의 레이아웃(너비, 높이, 위치 등) 변경 시 영향받는
모든 노드의 수치를 다시 계산하여 렌더 트리를 재생성하는 과정.
Reflow와 Repaint
Repaint
reflow 과정이 끝난 후 재생성된 렌더 트리를 다시 그리는 과정.
수치와 상관없는 background-color, visibility, outline 등의 스타일 변경시에는
reflow 과정이 생략 된 repaint 작업만 수행.
Style Layout Paint Composite
Reflow Repaint
1. reflow가 일어나는 애니메이션의 경우 가급적 position:fixed 또는 position:absolute로 지정
Reflow를 최소화하는 방법
지정된 노드를 전체 노드에서 분리시켜 해당 노드만 Reflow가 발생하도록 제한
2. 인라인 스타일 지양
인라인 스타일은 HTML이 파싱되는 시점에서 바로 레이아웃에 영향을 미치기 때문에 추가적인 Reflow가 발생함
3. Table 레이아웃을 지양
Table 태그는 테이블 값에 따라 넓이를 계산하여 화면에 그려지게 됨
조금만 변경이 있어도 모든 테이블의 넓이가 다시 계산되어야 함
4. CSS 하위 선택자는 필요한 만큼만 정리
Reflow 자체보다는 reflow가 유발시키는 CSS Recalculation에 필요
CSS 규칙은 오른쪽에서 왼쪽으로 이동하는데 이 과정에서 더 이상 일치하는 규칙이 없거나 잘못된 규칙이 나올 때까지 계속 됨
그러므로 불필요한 선택자를 사용하는 것은 성능 저하의 요인
/* 잘못된 예 */
.reflow_box .reflow_list li .btn{
display:block;
}
/* 올바른 예 */
.reflow_list .btn {
display:block;
}
애니메이션 성능 비교 Style Layout Paint Composite
Reflow Repaint
애니메이션 성능 비교
Transform: translate()을 이용한 애니메이션
Style Layout Paint Composite
Reflow Repaint
애니메이션 성능 비교
top, left를 이용한 애니메이션
Style Layout Paint Composite
Reflow Repaint
Transform: translate()을 이용한 애니메이션 Top,left를 이용한 애니메이션
애니메이션 성능 비교 Style Layout Paint Composite
Reflow Repaint
https://gyofeel.github.io/web/js/css/%EC%9B%B9%EC%97%90%EC%84%9C%EC%9D%98-%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98-%ED%8D
https://wit.nts-corp.com/2020/06/05/6134
참고 자료
CSS 애니메이션의 성능 아는 만큼 좋아져요!
웹에서의 애니메이션 퍼포먼스 개선하기
https://youtu.be/XoyWzOh3Sy4
Redraw와 reflow - 코드스테이츠 권오연 교육 엔지니어
1 sur 12

Recommandé

AAA게임_UI_최적화_및_빌드하기.pptx par
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxTonyCms
526 vues40 diapositives
글꼴 렌더링 이야기 par
글꼴 렌더링 이야기글꼴 렌더링 이야기
글꼴 렌더링 이야기Young-jun Jeong
1.6K vues29 diapositives
CSS Reset par
CSS ResetCSS Reset
CSS ResetToby Yun
3.8K vues28 diapositives
처음부터 다시 배우는 HTML5 & CSS3 강의자료 8일차 par
처음부터 다시 배우는 HTML5 & CSS3 강의자료 8일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 8일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 8일차Michael Yang
5.4K vues26 diapositives
airbnb_mav_8_pres par
airbnb_mav_8_presairbnb_mav_8_pres
airbnb_mav_8_presJeikei Park
152 vues297 diapositives
AIRBNB.COM 을 모티브로 한 포트폴리오 par
AIRBNB.COM 을 모티브로 한 포트폴리오AIRBNB.COM 을 모티브로 한 포트폴리오
AIRBNB.COM 을 모티브로 한 포트폴리오seungju park
219 vues297 diapositives

Contenu connexe

Similaire à 브라우저 렌더링 - Reflow와 Repaint 애니메이션 성능 비교

이미지와 애니메이션 효과 적용하기 par
이미지와 애니메이션 효과 적용하기이미지와 애니메이션 효과 적용하기
이미지와 애니메이션 효과 적용하기Devgear
3.1K vues40 diapositives
고성능 애니메이션 개발 기법 및 성능 최적화 par
고성능 애니메이션 개발 기법 및 성능 최적화고성능 애니메이션 개발 기법 및 성능 최적화
고성능 애니메이션 개발 기법 및 성능 최적화Byung Ho Lee
4.5K vues16 diapositives
Reflow and repaint 성능 비용 par
Reflow and repaint 성능 비용Reflow and repaint 성능 비용
Reflow and repaint 성능 비용Doo Sung Eom
847 vues25 diapositives
프론트엔드 개발자를 위한 Layer Model par
프론트엔드 개발자를 위한 Layer Model프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer ModelHan Lee
1.5K vues60 diapositives
투어팁스모바일웹 제작가이드 par
투어팁스모바일웹 제작가이드투어팁스모바일웹 제작가이드
투어팁스모바일웹 제작가이드병수 김
4.3K vues29 diapositives
처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차 par
처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차Michael Yang
5.3K vues24 diapositives

Similaire à 브라우저 렌더링 - Reflow와 Repaint 애니메이션 성능 비교(15)

이미지와 애니메이션 효과 적용하기 par Devgear
이미지와 애니메이션 효과 적용하기이미지와 애니메이션 효과 적용하기
이미지와 애니메이션 효과 적용하기
Devgear3.1K vues
고성능 애니메이션 개발 기법 및 성능 최적화 par Byung Ho Lee
고성능 애니메이션 개발 기법 및 성능 최적화고성능 애니메이션 개발 기법 및 성능 최적화
고성능 애니메이션 개발 기법 및 성능 최적화
Byung Ho Lee4.5K vues
Reflow and repaint 성능 비용 par Doo Sung Eom
Reflow and repaint 성능 비용Reflow and repaint 성능 비용
Reflow and repaint 성능 비용
Doo Sung Eom847 vues
프론트엔드 개발자를 위한 Layer Model par Han Lee
프론트엔드 개발자를 위한 Layer Model프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer Model
Han Lee1.5K vues
투어팁스모바일웹 제작가이드 par 병수 김
투어팁스모바일웹 제작가이드투어팁스모바일웹 제작가이드
투어팁스모바일웹 제작가이드
병수 김4.3K vues
처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차 par Michael Yang
처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 5일차
Michael Yang5.3K vues
우리가 몰랐던 크롬 개발자 도구 par Jae Sung Park
우리가 몰랐던 크롬 개발자 도구우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구
Jae Sung Park77.2K vues
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - HTML, Android Animation par NAVER D2
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - HTML, Android Animation[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - HTML, Android Animation
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - HTML, Android Animation
NAVER D29.2K vues
웹 브라우저는 어떻게 동작하나? (2) par Joone Hur
웹 브라우저는 어떻게 동작하나? (2)웹 브라우저는 어떻게 동작하나? (2)
웹 브라우저는 어떻게 동작하나? (2)
Joone Hur5.6K vues
ReactJS로 시작하는 멀티플랫폼 개발하기 par Taegon Kim
ReactJS로 시작하는 멀티플랫폼 개발하기ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기
Taegon Kim34.1K vues
React를 이용하여 멀티플랫폼에서 개발하기 par WebFrameworks
React를 이용하여 멀티플랫폼에서 개발하기React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기
WebFrameworks1.5K vues
CSS Rendering - 1 par 성훈 백
CSS Rendering - 1CSS Rendering - 1
CSS Rendering - 1
성훈 백297 vues
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트 par 강 민우
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
강 민우1.3K vues
[오픈소스컨설팅] Atlassian Confluence User Guide Part-1 par Ji-Woong Choi
[오픈소스컨설팅] Atlassian Confluence User Guide Part-1[오픈소스컨설팅] Atlassian Confluence User Guide Part-1
[오픈소스컨설팅] Atlassian Confluence User Guide Part-1
Ji-Woong Choi4.2K vues
Viewpager를활용한app만들기 par DaeHee Jang
Viewpager를활용한app만들기Viewpager를활용한app만들기
Viewpager를활용한app만들기
DaeHee Jang5.3K vues

Plus de Wonjun Hwang

상속과 구현 par
상속과 구현상속과 구현
상속과 구현Wonjun Hwang
0 vue77 diapositives
오버라이딩 조금 더 알아보기 par
오버라이딩 조금 더 알아보기오버라이딩 조금 더 알아보기
오버라이딩 조금 더 알아보기Wonjun Hwang
0 vue22 diapositives
컴포넌트 설계 par
컴포넌트 설계컴포넌트 설계
컴포넌트 설계Wonjun Hwang
14 vues21 diapositives
성능 테스트 par
성능 테스트성능 테스트
성능 테스트Wonjun Hwang
13 vues13 diapositives
WebRTC par
WebRTCWebRTC
WebRTCWonjun Hwang
22 vues18 diapositives
Flutter & Firebase par
Flutter & FirebaseFlutter & Firebase
Flutter & FirebaseWonjun Hwang
18 vues16 diapositives

Plus de Wonjun Hwang(20)

오버라이딩 조금 더 알아보기 par Wonjun Hwang
오버라이딩 조금 더 알아보기오버라이딩 조금 더 알아보기
오버라이딩 조금 더 알아보기
Wonjun Hwang0 vue
프론트엔드 비동기 프로그래밍 par Wonjun Hwang
프론트엔드 비동기 프로그래밍프론트엔드 비동기 프로그래밍
프론트엔드 비동기 프로그래밍
Wonjun Hwang28 vues
트렌디 앱 - ARC & OBSIDIAN par Wonjun Hwang
트렌디 앱 - ARC & OBSIDIAN트렌디 앱 - ARC & OBSIDIAN
트렌디 앱 - ARC & OBSIDIAN
Wonjun Hwang29 vues
차이나는 개발자 클라스 par Wonjun Hwang
차이나는 개발자 클라스차이나는 개발자 클라스
차이나는 개발자 클라스
Wonjun Hwang6 vues
차이나는 개발자 클라스 par Wonjun Hwang
차이나는 개발자 클라스차이나는 개발자 클라스
차이나는 개발자 클라스
Wonjun Hwang37 vues

브라우저 렌더링 - Reflow와 Repaint 애니메이션 성능 비교

  • 1. 윤정빈 브라우저 렌더링 과정의 Reflow와 Repaint CSS 애니메이션 성능 비교
  • 2. Width 증가 ! Width를 고정하고 left 속성으로 위치를 변경 Transform: scaleX() 증가 주제 선정 이유 같은 애니메이션을 여러 방법으로 구현해보면서 성능 차이가 궁금했음
  • 3. 브라우저 구조 User Interface Browser engine Rendering engine Networking Javascript engine UI Backend Data Persistence
  • 4. 브라우저 렌더링 과정 HTML Text CSS Stylesheet Text DOM Tree CSSOM Style (Render Tree) Layout Paint Composite Style: 요소에 적용할 스타일 계산 Layout: 레이어를 생성하여 화면에 각 요소가 어떻게 위치할 지 계산하여 화면에 배치 Paint: 생성된 레이아웃에 픽셀을 추가하여 화면에 그리는 과정 Composite: 생성한 레이어 계층을 합성. 이 계층을 내려다보면 모든 요소가 고유한 위치(복합 계층)를 갖는 완전한 웹 페이지로 보여짐
  • 5. 애니메이션을 위한 GPU 사용 Composite CPU가 애니메이션을 처리하기 위해 GPU와 통신하는 단계 Transform, opacity 와 같은 속성을 사용 GPU 애니메이션을 처리하는 또 다른 작은 기계 많은 UI 계산 처리가 가능 Style Layout Paint Composite CPU 대신 GPU를 사용해 웹 브라우저가 애니메이션 수행(하드웨어 가 새 레이어 생성 ( UI요소의 애니메이션과 아닌 부분을 나눠 다시 렌더링 하지 않기 위
  • 6. Reflow 생성된 DOM 노드의 레이아웃(너비, 높이, 위치 등) 변경 시 영향받는 모든 노드의 수치를 다시 계산하여 렌더 트리를 재생성하는 과정. Reflow와 Repaint Repaint reflow 과정이 끝난 후 재생성된 렌더 트리를 다시 그리는 과정. 수치와 상관없는 background-color, visibility, outline 등의 스타일 변경시에는 reflow 과정이 생략 된 repaint 작업만 수행. Style Layout Paint Composite Reflow Repaint
  • 7. 1. reflow가 일어나는 애니메이션의 경우 가급적 position:fixed 또는 position:absolute로 지정 Reflow를 최소화하는 방법 지정된 노드를 전체 노드에서 분리시켜 해당 노드만 Reflow가 발생하도록 제한 2. 인라인 스타일 지양 인라인 스타일은 HTML이 파싱되는 시점에서 바로 레이아웃에 영향을 미치기 때문에 추가적인 Reflow가 발생함 3. Table 레이아웃을 지양 Table 태그는 테이블 값에 따라 넓이를 계산하여 화면에 그려지게 됨 조금만 변경이 있어도 모든 테이블의 넓이가 다시 계산되어야 함 4. CSS 하위 선택자는 필요한 만큼만 정리 Reflow 자체보다는 reflow가 유발시키는 CSS Recalculation에 필요 CSS 규칙은 오른쪽에서 왼쪽으로 이동하는데 이 과정에서 더 이상 일치하는 규칙이 없거나 잘못된 규칙이 나올 때까지 계속 됨 그러므로 불필요한 선택자를 사용하는 것은 성능 저하의 요인 /* 잘못된 예 */ .reflow_box .reflow_list li .btn{ display:block; } /* 올바른 예 */ .reflow_list .btn { display:block; }
  • 8. 애니메이션 성능 비교 Style Layout Paint Composite Reflow Repaint
  • 9. 애니메이션 성능 비교 Transform: translate()을 이용한 애니메이션 Style Layout Paint Composite Reflow Repaint
  • 10. 애니메이션 성능 비교 top, left를 이용한 애니메이션 Style Layout Paint Composite Reflow Repaint
  • 11. Transform: translate()을 이용한 애니메이션 Top,left를 이용한 애니메이션 애니메이션 성능 비교 Style Layout Paint Composite Reflow Repaint
  • 12. https://gyofeel.github.io/web/js/css/%EC%9B%B9%EC%97%90%EC%84%9C%EC%9D%98-%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98-%ED%8D https://wit.nts-corp.com/2020/06/05/6134 참고 자료 CSS 애니메이션의 성능 아는 만큼 좋아져요! 웹에서의 애니메이션 퍼포먼스 개선하기 https://youtu.be/XoyWzOh3Sy4 Redraw와 reflow - 코드스테이츠 권오연 교육 엔지니어