javascript 에서 문자열 연결 성능
2969 단어 JavaScript문자열잇닿다
var str = "hello ";
str += "world";
실제로 이 코드 가 막후 에서 실행 되 는 절 차 는 다음 과 같다.
문자열 연결 이 완 료 될 때마다 2 ~ 6 절 차 를 실행 하여 자원 을 소모 합 니 다.이 과정 을 수백 번, 심지어 수천 번 반복 하면 성능 문제 가 생 길 수 있다.해결 방법 은 Array 대상 으로 문자열 을 저장 한 다음 join () 방법 (매개 변 수 는 빈 문자열) 으로 마지막 문자열 을 만 드 는 것 입 니 다.앞의 코드 대신 아래 코드 를 사용 하 는 것 을 상상 하 세 요:
var arr = new Array();
arr[0] = "hello ";
arr[1] = "world";
var str = arr.join("");
이렇게 하면 배열 에 얼마나 많은 문자열 을 도입 하 든 문제 가 되 지 않 습 니 다. join () 방법 을 호출 할 때 만 연결 작업 이 발생 하기 때 문 입 니 다.이때 실행 절 차 는 다음 과 같다.
function StringBuffer () {
this._strings_ = new Array();
}
StringBuffer.prototype.append = function(str) {
this._strings_.push(str);
};
StringBuffer.prototype.toString = function() {
return this._strings_.join("");
};
이 코드 는 먼저 strings 속성 을 주의해 야 합 니 다. 본 의 는 개인 속성 입 니 다.그것 은 append () 와 toString () 방법 두 가지 밖 에 없다.append () 방법 은 문자열 배열 에 이 인 자 를 추가 합 니 다. toString () 방법 은 배열 의 join 방법 을 호출 하여 실제 연 결 된 문자열 을 되 돌려 줍 니 다.StringBuffer 대상 으로 문자열 을 연결 하려 면 다음 코드 를 사용 하 십시오.
var buffer = new StringBuffer ();
buffer.append("hello ");
buffer.append("world");
var result = buffer.toString();
TIY
아래 코드 로 StringBuffer 대상 과 전통 적 인 문자열 연결 방법의 성능 을 테스트 할 수 있 습 니 다.
var d1 = new Date();
var str = "";
for (var i=0; i < 10000; i++) {
str += "text";
}
var d2 = new Date();
document.write("Concatenation with plus: "
+ (d2.getTime() - d1.getTime()) + " milliseconds");
var buffer = new StringBuffer();
d1 = new Date();
for (var i=0; i < 10000; i++) {
buffer.append("text");
}
var result = buffer.toString();
d2 = new Date();
document.write("<br />Concatenation with StringBuffer: "
+ (d2.getTime() - d1.getTime()) + " milliseconds");
TIY
이 코드 는 문자열 연결 을 두 번 테스트 합 니 다. 첫 번 째 는 플러스 를 사용 하고 두 번 째 는 StringBuffer 류 를 사용 합 니 다.모든 작업 은 10000 개의 문자열 을 연결 합 니 다.날짜 값 d1 과 d2 는 작업 완료 에 필요 한 시간 을 판단 하 는 데 사 용 됩 니 다.Date 대상 을 만 들 때 인자 가 없 으 면 현재 날짜 와 시간 을 부여 합 니 다.연결 작업 이 얼마나 걸 렸 는 지 계산 하려 면 날짜 의 밀리초 를 (getTime () 방법의 반환 값 으로) 줄 이면 됩 니 다.이것 은 자 바스 크 립 트 의 성능 을 평가 하 는 흔 한 방법 이다.이 테스트 결 과 는 StringBuffer 클래스 를 사용 하 는 것 이 플러스 번 호 를 사용 하 는 것 보다 50% - 66% 의 시간 을 절약 했다 는 것 을 설명 해 야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.