자바 script 에서 문자열 연결 성능

2257 단어 문자열 연결
1.문자열 연결 은 어떻게 합 니까?먼저 문자열 연결 의 두 가지 상용 방법 을 살 펴 보 자.1.1 문자열 연결 연산 자 를 사용 하 는 데 자주 사용 되 는 언어(예 를 들 어 자바,C\#,PHP 등)는 모두 문자열 연결 연산 자가 있 고 자바 script 도 예외 가 아니다.코드 예제:
 
var str = "";
str = str + "a";
1.2 사용 배열 은 자주 사용 하 는 언어 에서 문자열 연결 연산 의 성능 이 보편적으로 높 지 않다.이 를 위해 C\#에서 문자열 을 연결 하 는 데 사용 할 StringBuilder(Java 에서 StringBuffer 제공)를 제공 합 니 다.자바 script 에 서 는 Array 를 통 해 StringBuilder 를 모 의 하 는 방안 이 나 왔 습 니 다.
 
var str = [];
for (var i = 0; i < 100; i++) {
  str[i] = "12345";
}
str = str.join("");
2 테스트 는 문자열 을 복사 하 는 과정 을 통 해 두 가지 방법의 성능 을 테스트 합 니 다.2.1 문자열 연결 연산 자 를 통 해 복사 합 니 다.
 
function copyByOperator(str, times) {
  var newStr = "";
  for (var i = 0; i < times; i++) {
    newStr += str;
  }
  return newStr;
}
2.2 배열 을 통 해 복사 합 니 다.
 
function copyByArray(str, times) {
  var newStr = [];
  for (var i = 0; i < times; i++) {
    newStr[i] = str;
  }
  return newStr.join("");
}
str 는 고정된 HTML 문자열 을 사용 하고 길 이 는 61 입 니 다.2.3 IE 에서 의 테스트 는 IE 의 성능 이 비교적 떨 어 지 는 것 을 고려 하여 먼저 작은 times 값(6000)으로 IE 6,IE 7,IE 8 아래 에서 테스트 한다.10 회 실행 후 평균 값 을 얻 습 니 다.결 과 는 다음 과 같 습 니 다.
IE 브 라 우 저의 테스트 결과
브 라 우 저
copyByOperator
copyByArray
IE 6
1780.4ms
9.5ms
IE 7
1754.6ms
7.7ms
IE 8
1.6ms
9.4ms
IE6,7 은 IE8 의 테스트 결과 와 거리 가 멀 고 IE 8 은 문자열 연결 연산 을 최적화 시 켰 으 며 효율 은 배열 복사 법 보다 높 았 다.
2.4 각종 브 라 우 저 에서 의 테스트
최신 버 전의 각종 브 라 우 저 를 비교적 큰 times 값(50000)으로 테스트 합 니 다.
각종 브 라 우 저의 테스트 결과
브 라 우 저
copyByOperator
copyByArray
IE 8
21.8ms
54.7ms
Firefox 3.6
40.9ms
27.9ms
Chrome 4
4.4ms
10.9ms
Safari 4.0.5
41.6ms
34.6ms
Opera 10.50
33.1ms
23ms
이 결 과 는 정말 예상 밖 이다.IE 8 의 문자열 연결 연산 은 크롬 이외 의 브 라 우 저 를 모두 물리 쳤 다.IE 의 성능 이 떨어진다 고 하 는 사람들 은 주의해 야 한다.크롬 에서 도 문자열 연결 연산 이 배열 복제 법 보다 효율 적 인 경우 가 나 타 났 다.
3 총화
브 라 우 저의 성능 이 계속 향상 되 고 있 습 니 다.전단 엔지니어 로 서 자바 script 프로그램의 최적화 전략 을 적시에 조정 하여 최고의 성능 을 얻 도록 해 야 합 니 다.

좋은 웹페이지 즐겨찾기