>웹 프론트엔드 >JS 튜토리얼 >JavaScript 문자열 연결 성능 ​​최적화_javascript 기술

JavaScript 문자열 연결 성능 ​​최적화_javascript 기술

WBOY
WBOY원래의
2016-05-16 18:57:221070검색
코드 복사 코드는 다음과 같습니다.

var str = "hello"
str = "world" ;

백그라운드 작업:
1) "hello"를 저장할 문자열을 만들고 str이 이를 가리키도록 합니다.
2) "world"를 저장할 문자열을 만듭니다.
3) 결과를 저장할 문자열을 만듭니다.
4) str의 현재 내용을 결과 문자열에 복사합니다.
5) 결과 문자열에 world를 복사합니다.
6) str이 결과 문자열을 가리키도록 str을 업데이트합니다.
문자열이 연결될 때마다 2)~6)이 루프로 반복됩니다. 수백, 수천 번 반복하면 리소스가 많이 소모되고 성능에 영향을 미치게 됩니다.
해결책:
Array 객체를 사용하여 문자열을 저장한 다음 Join() 메서드를 사용하여 결과를 출력합니다.
Java의 StringBuffer 클래스를 모델로 했습니다.
코드 복사 코드는 다음과 같습니다.

function StringBuffer(){
이것 ._strings = 새 배열;
}
StringBuffer.prototype.append = 함수(str){
this._strings.push(str)
}
StringBuffer.prototype.toString = 함수 (){
return this._strings.join("");
}

테스트 성능:
코드 1: "="를 사용하여 문자열 연결
코드 복사 코드는 다음과 같습니다.

var d = new Date()
var str = "";
for(var i=0;i<10000;i ){
str = "test"
}
var d2 = new Date(); writeln(d2.getTime( )-d.getTime());

코드 2: StringBuffer 사용

코드 복사 코드는 다음과 같습니다.
var d = new Date()
var str = new StringBuffer()
for(var i=0;i<10000; ;i ){
str.append("test");
}
var res = str.toString()
var d2 = new Date()
document.writeln( d2.getTime()-d .getTime());

여러 테스트 결과로 판단하면 StringBuffer를 사용하면 시간을 50% 이상 절약할 수 있습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.