>웹 프론트엔드 >JS 튜토리얼 >JS_javascript 기술로 문자열을 효율적으로 조합하는 여러 방법의 비교 및 ​​테스트 코드

JS_javascript 기술로 문자열을 효율적으로 조합하는 여러 방법의 비교 및 ​​테스트 코드

WBOY
WBOY원래의
2016-05-16 18:29:311047검색

Ajax를 사용하여 정보를 제출할 때 XmlHttp를 통한 POST 제출을 완료하기 위해 상대적으로 큰 문자열을 조합해야 하는 경우가 종종 있습니다. 그렇게 많은 양의 정보를 제출하는 것이 촌스러워 보일 수도 있지만, 때때로 우리는 그러한 필요에 직면해야 할 수도 있습니다. 그렇다면 JavaScript에서 문자열이 얼마나 빨리 축적됩니까? 먼저 다음 실험을 해보겠습니다. 길이가 30000인 문자열을 누적합니다.
테스트 코드 1 - 소모 시간 : 14.325초

코드 복사 코드는 다음과 같습니다.

var str = "";
for (var i = 0; i < 50000; i ) {
str = "xxxxxx"

이 코드는 14.325초가 걸리며 결과가 이상적이지 않습니다. 이제 코드를 다음 형식으로 변경합니다.

테스트 코드 2 - 소요 시간: 0.359초
코드 복사 코드는 다음과 같습니다.
var str = ""
for (var i = 0; i < 100; i ) {
var sub = " ";
for (var j = 0; j sub = "xxxxxx";
}
str = sub;
}

이 코드는 0.359초 걸립니다! 결과는 같습니다. 우리가 하는 일은 먼저 작은 끈 몇 개를 조립한 다음 더 큰 끈으로 조립하는 것뿐입니다. 이 접근 방식은 문자열 조립의 후반 단계에서 메모리에 복사되는 데이터 양을 효과적으로 줄일 수 있습니다. 이 원리를 알고 나면 테스트를 위해 위 코드를 더 분해할 수 있습니다. 아래 코드는 0.140초 밖에 걸리지 않습니다.

테스트 코드 3 - 소모 시간 : 0.140초
코드 복사 코드는 다음과 같습니다.
var strArray = new Array();
for (var i = 0; i < 100; i ) {
var sub = ""
for (var j = 0 ; j sub = "xxxxxx";
strArray.push(sub)
}
str = String.prototype.concat apply(" ", strArray);


그러나 위의 접근 방식이 최선이 아닐 수도 있습니다! 제출해야 하는 정보가 XML 형식인 경우(사실 대부분의 경우 제출할 정보를 XML 형식으로 조합하려고 시도할 수 있음) DOM 객체를 사용하여 조합하는 보다 효율적이고 우아한 방법을 찾을 수도 있습니다. 우리를 위한 것입니다. 다음 단락에서는 길이가 950015인 문자열을 조합하는 데 0.890초밖에 걸리지 않습니다.

DOM 객체를 사용하여 정보 조합 - 시간 소모: 0.890초

var xmlDoc;
if (browserType == BROWSER_IE) {
xmlDoc = new ActiveXObject("Msxml.DOMDocument")
}
else {
xmlDoc = document.createElement("DOM");
}
var root = xmlDoc.createElement("root")
for (var i = 0; i < 50000; i ) {
var node = xmlDoc.createElement("data");
if (browserType == BROWSER_IE) {
node.text = "xxxxxx";
else {
node.innerText = "xxxxxx";
root.appendChild(node);
}
xmlDoc.appendChild(root)
var str; BROWSER_IE) {
str = xmlDoc.xml;
}
else {
str = xmlDoc.innerHTML;

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