사용자 삽입 이미지
Tom Trenka 씨가 문자열 성능에 관한 그의 최근 글IE에 관해 더 깊이 탐구Array.join의 신화를 무너뜨리는 글을 썼습니다.

Tom씨는 여러 버전의 IE와 다양한 크기의 데이터를 사용해 수많은 테스트를 했습니다.

결론
IE7에서는 성능 개선을 위해 우선 해야할 것으로, 우리는 더이상 대규모 문자열 연산을 다룰 때의 대체 방안 사용에 대해 고려할 필요가 없습니다; 대체 상황에서 Array.join을 사용하는 것은 같은 상황에서 += 를 사용하는 것에 비해 두드러진 이득을 주지는 못합니다. 게다가 IE6에서의 차이는 특정 버전을 위해 따로 코드를 작성하지 않아도 될만큼 미미한 것입니다.

이러한 종류의 연산에서 문자열 대신 배열 사용을 고려해야할 유일한 때는 추가할 조각들이 매우 크다고(65546 bytes 이상) 느껴질 경우입니다; 이런 일을 하는 것은 Dan Pupius씨가 객체 할당과 JScript 가비지 컬렉터에 대한 그의 분석에서 말한 바와 같은 GC 문제를 초래합니다.

그로부터, 우리는 Internet Explorer에서의 프로그래밍 기술을 발전시킬 수 있었고, 단순한 반복과 한번에 한 곳에 밀어넣는 일보다는 가능한 많은 인자를 가진 Builder.append라 부르는게 더 나을 것 같습니다.

또한 작게 시작하는 것이 좋습니다; 문자열 연산을 구조화 하세요 그러면 대규모 문자열 연산은 최소화 될 것입니다. 이 경우에, 문자열 세트를 조립하기 위해 임시 버퍼를 사용하고 이들을 보다 매우 큰 문자열에 덧붙이는 것이 작은 조각들을 늘 큰 문자열에 붙이는 것보다 더 좋습니다.

그리고 늘 그렇듯이, 반복 규모의 최소화는 JScript의 성능을 향상시키는데 도움이 될 것입니다.


더 자세한 결과를 살펴보실 수도 있습니다.

from String Performance in IE: Array.join vs += continued
Posted by 행복한고니 트랙백 0 : 댓글 0