sitelink3 http://1 
sitelink4 http://ko 
extra_vars5 http://jaures.egloos.com/2380949 
extra_vars6 sitelink1 

어떤 특정 노드에 수많은 data를 지속적으로 update(추가)를 해야하는 작업이 있다고 가정해 보기로 하자.

보통 DOM에 대한 handling은 많은 비용이 발생하게 되는데, 물론 그 양이 적은 경우에는 어떻게 하더라도 크게 차이는 없다.

하지만 예를 들어 2만개의 div tag를 handling 한다고 할때에는 얘기가 달라진다.

다음의 작업을 진행해야 한다고 생각해 보기로 한다.
1. node 추가
2. node 삭제
3. 전체 node 삭제


기본적으로 생각할 수 있는게, DOM에 대한 function을 직접 이용하거나 또는 단순하게 innerHTML을 이용해 처리하는 방법이 있을 수 있다.

결론적으로는 innerHTML을 이용해 처리하는 경우 속도가 상당히 느리다. Node의 추가, 삭제, 전체 삭제의 경우 모두 DOM을 직접 handling 하는 것이 훨씬 빠르다.

아래는 2만 개의 적당한 textNode를 값으로 가지고 있는 div에 대해 상위 1천개의 node를 삭제했을 때의 수행 결과 시간(단위 millisecond)이다. 시간은 처리하는 data에 비례하기 때문에 적당히 참고 하는 정도로만 보면 된다.

삭제할 때 사용한 방법은 :
1. 정규식을 이용해 상위 1천개의 data를 replace 한 후, 다시 innerHTML에 값을 할당
2. Loop을 이용해 상위 천개의 node를 삭제


- IE6
replace RegEx : N/A
removeChild : 47

- IE7
replace RegEx : 1594
removeChild : 32

- IE8
replace RegEx : 734
removeChild : 5641

- FF 3.51

replace RegEx : 9737
removeChild : 55

- Chrome
replace RegEx : 597
removeChild : 315

- Safari 4
replace RegEx : 663
removeChild : 560

- Opera 10 beta
replace RegEx : 2297
removeChild : 109


약간 특이한 점은 모든 브라우저에서 removeChild가 월등한 반면, 유독 IE8에서만큼은 정규식을 이용한 치환의 성능이 더 나았다는 점이다.

또한 2만개의 node를 삭제하는 경우에도 어떤 특정한 작업을 하지 않고, 단순하게 object.innerHTML = "" 하면 성능에도 별다른 영향이 없을것 같았지만 그렇지 않았다는 점이다.

이 경우에도 removeChild를 사용해 node 자체를 삭제해 버리는 것이 훨씬 더 빠르다.

번호 제목 글쓴이 날짜 조회 수
128 Web Speech API Example (HTML5 STT & TTS) file 황제낙엽 2025.04.14 731
127 모바일과 데스크톱을 포괄하는 사용자의 터치 이벤트(onPointerTap) 황제낙엽 2025.04.09 648
126 Web RTC 에 관하여 황제낙엽 2024.11.20 626
125 div와 span의 차이점 (from Bing) 황제낙엽 2023.06.16 685
124 flexbox (flexible box layout) 황제낙엽 2023.02.27 641
123 characters from ISO 8859-1 황제낙엽 2020.11.10 36946
122 HTML FRAMESET 태그 예제 황제낙엽 2020.11.06 718
121 스마트 기기에서 여러 단말기의 해상도에 대응하기 위해 사용하는 HTML viewport meta tag 황제낙엽 2020.11.06 644
120 네이버의 무료 나눔 글꼴 황제낙엽 2020.05.06 1762
119 서버의 이미지나 txt 파일을 웹브라우저에서 다운로드하기 황제낙엽 2019.05.13 867
118 When to encode space to plus (+) or %20? (application/x-www-form-urlencoded) 황제낙엽 2019.04.15 917
117 HTTP/2 소개 황제낙엽 2018.10.12 693
116 글자, 문자, 텍스트, 글꼴, 서체, 폰트와 관련한 속성들 / font-size , 크기 단위(em, px, pt, rem), 절대 단위, 상대 단위 황제낙엽 2018.04.18 842
115 Pragma와 Cache-Control 황제낙엽 2018.03.28 845
114 로드밸런싱(L4)+아파치를 운영시 etag제거로 캐시 성능 최적화 file 황제낙엽 2018.03.28 944
113 HTTP 요청 헤더 III - If-Match, If-Modified-Since, If-None-Match file 황제낙엽 2018.03.27 726
112 재미난 로그인 페이지 만들기 file 황제낙엽 2018.03.26 1592
111 HTTP Cache-Control 요청 지시어 황제낙엽 2018.03.09 713
110 내 웹사이트의 속도를 빠르게! file 황제낙엽 2018.03.07 859
109 성능을 위한 초간단 HTTP 304 Not Modified 구현 방법 file 황제낙엽 2018.03.07 816