Javascript三種字符串連接方式及性能比較
第一種:用連接符“+”連接字符串
str="a";
str+="b";
這種方法相對(duì)以下兩種,最便捷快速。建議100字符以下的連接使用這種連接方式。
第二種:以數(shù)組作為中介,使用jion函數(shù)進(jìn)行連接
var arr=new Array();
arr.push(a);
arr.push(b);
var str=arr.join("");
第三種:利用對(duì)象屬性連接字符串
function stringConnect(){
this._str_=new Array();
}
stringConnect.prototype.append=function(a){
this._str_.push(a);
}
stringConnect.prototype.toString=function(){
return this._str_.join();
}
var mystr=new stringConnect;
mystr.append("a");
var str=mystr.toString();
利用下面代碼對(duì)三種方法性能進(jìn)行比較,通過更改 c 的值來(lái)調(diào)整連接字符串的個(gè)數(shù):
var str="";
var d1,d2;
var c=5000;//連接字符串的個(gè)數(shù)
//------------------------測(cè)試第三種方法耗費(fèi)時(shí)間-------
d1=new Date();
function stringConnect(){
this._str_=new Array();
}
stringConnect.prototype.append=function(a){
this._str_.push(a);
}
stringConnect.prototype.toString=function(){
return this._str_.join("");
}
var mystr=new stringConnect;
for(var i=0;i<c;i++){
mystr.append("a");
}
str=mystr.toString();
d2=new Date();
console.log(d2.getTime()-d1.getTime());
//-----------------------------------------------------
//------------------------測(cè)試第二種方法耗費(fèi)時(shí)間-------
d1=new Date();
var arr=new Array();
for(var i=0;i<c;i++){
arr.push("a");
}
str=arr.join("");
d2=new Date();
console.log(d2.getTime()-d1.getTime());
//-------------------------------------------------------
//------------------------測(cè)試第一種方法耗費(fèi)時(shí)間-------
d1=new Date();for(var i=0;i<c;i++){
str+="a";
}
d2=new Date();
console.log(d2.getTime()-d1.getTime());
//-------------------------------------------------------
我調(diào)整 c 分別等于5000、50000、500000、5000000,每個(gè)數(shù)值分別測(cè)了10次,最后結(jié)果如下:
c=5000
平均耗時(shí)(單位毫秒)
第三種 3 2 2 3 1 2 2 1 1 1 1.8
第二種 1 3 0 3 1 3 4 1 4 2 2.2
第一種 0 0 0 0 0 1 1 1 1 1 0.5
c=50000
第三種 22 12 9 14 12 13 13 13 10 17 13.5
第二種 8 13 12 8 11 11 8 9 8 9 9.7
第一種 7 12 5 11 10 10 10 13 16 12 10.6
c=500000
第三種 104 70 74 69 76 77 69 102 73 73 78.7
第二種 78 100 99 99 100 98 96 71 94 97 93.2
第一種 90 87 83 85 85 83 84 83 88 86 85.4
c=5000000
第三種 651 871 465 444 1012 436 787 449 432 444 599.1
第二種 568 842 593 747 417 747 719 549 573 563 631.8
第一種 516 279 616 161 466 416 201 495 510 515 417.5
統(tǒng)計(jì)5000000的時(shí)候在地址欄加入了隨機(jī)參數(shù),應(yīng)該是避免了緩存的影響的。從結(jié)果來(lái)看,第一種方法并不比另2種方法消耗多,甚至還更有優(yōu)勢(shì),這點(diǎn)和手冊(cè)上的說(shuō)明明顯不一致。
測(cè)試系統(tǒng):win 7旗艦
瀏覽器:chrome 52.0.2739.0 m
總結(jié)
以上所述是小編給大家介紹的Javascript三種字符串連接方式及性能比較,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
JS實(shí)現(xiàn)的五級(jí)聯(lián)動(dòng)菜單效果完整實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)的五級(jí)聯(lián)動(dòng)菜單效果,結(jié)合完整實(shí)例形式分析了js多級(jí)聯(lián)動(dòng)菜單的完整實(shí)現(xiàn)步驟,涉及JS數(shù)組遍歷、擴(kuò)展及元素節(jié)點(diǎn)操作相關(guān)技巧,需要的朋友可以參考下2017-02-02
JavaScript實(shí)現(xiàn)統(tǒng)計(jì)文本框Textarea字?jǐn)?shù)增強(qiáng)用戶體驗(yàn)
現(xiàn)在流行的Twitter等微博客網(wǎng)站,有一個(gè)很好的用戶體驗(yàn),就是在文本框中輸入文字的時(shí)候,會(huì)自動(dòng)統(tǒng)計(jì)輸入的字符,并顯示用戶還能輸入的字符,在限制了140個(gè)字的微博客中,這樣的小提示可以很好的增強(qiáng)用戶體驗(yàn),本文也嘗試著實(shí)現(xiàn)一下2012-12-12
微信小程序?qū)崿F(xiàn)點(diǎn)贊業(yè)務(wù)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)點(diǎn)贊業(yè)務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-02-02
js實(shí)現(xiàn)字符全排列算法的簡(jiǎn)單方法
下面小編就為大家?guī)?lái)一篇js實(shí)現(xiàn)字符全排列算法的簡(jiǎn)單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-05-05
微信企業(yè)號(hào)開發(fā)之微信考勤百度地圖定位
本文給大家介紹微信企業(yè)號(hào)開發(fā)之微信考勤百度地圖定位,有需要的朋友參考下本篇文章2015-09-09
Js表格萬(wàn)條數(shù)據(jù)瞬間加載實(shí)現(xiàn)代碼
一條數(shù)據(jù)創(chuàng)建一行,如果數(shù)量大的時(shí)候,一次性要加載完數(shù)據(jù)的話,瀏覽器就會(huì)卡上半天,下面有個(gè)不錯(cuò)的方法,大家可以參考下2014-02-02
javascript實(shí)現(xiàn)平滑無(wú)縫滾動(dòng)
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)平滑無(wú)縫滾動(dòng)的具體代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05

