By Uzi Refaeli
翻譯:Forain
這篇文章將會介紹一些能夠提高你的JavaScript代碼性能的建議和技巧,。
原文參見http://hi.baidu.com/forain/blog/item/62e8918fc2eb4aff513d929c.html
問題
大多數(shù)JavaScript開發(fā)者都習(xí)慣于使用 JavaScript提供的簡單的字符串處理,,比如連接字符串的”+”運(yùn)算符:
var str = “Hello” + “ World”;
這句代碼可讀性很好,對于連接小的字符串是很方便的,。但是利用這樣的方法去操作許多的字符串(比如當(dāng)你要動態(tài)的創(chuàng)建整個(gè)頁面內(nèi)容)時(shí),,代碼性能將被嚴(yán)重影響。
解決方案
數(shù)組對象的join方法使我們可以將數(shù)組里的所有元素連接成為一個(gè)字符串,,在這個(gè)連接過程中,,join方法還允許我們設(shè)定一個(gè)字符作為分隔符插入在各個(gè)元素中間昨晚間隔。如果我們將我們要連接的文字段落的各個(gè)部分分別賦予給一個(gè)數(shù)組的各個(gè)元素,,然后利用join方法將他們連接在一起(分隔符設(shè)置為空),,我們可以得到與“+”操作同樣的結(jié)果。這種方法類似于JAVA中的StringBuffer對象,。
var buffer =
new Array();
buffer[buffer.length] = "Hello";
buffer[buffer.length] = " World";
buffer.join("");
測試
利用數(shù)組join方法連接字符串的好處在于它確確實(shí)實(shí)地提高了代碼的效率,。為了說明這個(gè)結(jié)論,作者做了一個(gè)測試,,測試結(jié)果如下:
方法
|
瀏覽器
|
最小值
|
最大值
|
平均值
|
傳統(tǒng)的字符串連接操作
|
IE 6
|
460ms
|
810ms
|
646ms
|
FF 1.5B1
|
15ms
|
47ms
|
26ms
|
利用數(shù)組的join方法
|
IE 6
|
15ms
|
32ms
|
26ms
|
FF 1.5B1
|
15ms
|
31ms
|
20ms
|
結(jié)論
在你的JavaScript應(yīng)用中使用數(shù)組的join方法能夠提高你的代碼效率,,給用戶帶來更加流暢的體驗(yàn),。
測試方法
function test1(){
var cycles = 10000;
var tp1 =
new Date().valueOf();
var buffer = "";
for (
var i = 0; i < cycles; i++)
buffer += "0123456789";
var tp2 =
new Date().valueOf();
alert(tp2 - tp1);
}
function test2(){
var tp1 =
new Date().valueOf();
var buffer =
new Array();
for (
var i = 0; i < cycles; i++)
buffer[buffer.length] = "0123456789";
var str = buffer.join("");
var tp2 =
new Date().valueOf();
alert(tp2 - tp1);
}