国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

淺談JS中的三種字符串連接方式及其性能比較

2024-05-06 16:31:48
字體:
來源:轉載
供稿:網友

工作中經常會碰到要把2個或多個字符串連接成一個字符串的問題,在JS中處理這類問題一般有三種方法,這里將它們一一列出順便也對它們的性能做個具體的比較。

第一種方法 用連接符“+”把要連接的字符串連起來:

str="a";str+="b";

毫無疑問,這種方法是最便捷快速的,如果只連接100個以下的字符串建議用這種方法最方便。

第二種方法 以數組作為中介用 join 連接字符串:

var arr=new Array();arr.push(a);arr.push(b);var str=arr.join("");

w3school 網站介紹說這種方法要比第一種消耗更少的資源,速度也更快,后面我們通過實驗再驗證是否是這樣。

第三種方法 利用對象屬性來連接字符串

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();

利用下面代碼對三種方法性能進行比較,通過更改 c 的值來調整連接字符串的個數:

var str="";var d1,d2;var c=5000;//連接字符串的個數//------------------------測試第三種方法耗費時間------- 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());//-----------------------------------------------------//------------------------測試第二種方法耗費時間-------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());//-------------------------------------------------------//------------------------測試第一種方法耗費時間-------d1=new Date();for(var i=0;i<c;i++){  str+="a";}d2=new Date();console.log(d2.getTime()-d1.getTime());//-------------------------------------------------------

我調整 c 分別等于5000、50000、500000、5000000,每個數值分別測了10次,最后結果如下:

c=5000
平均耗時(單位毫秒)
第三種 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

統計5000000的時候在地址欄加入了隨機參數,應該是避免了緩存的影響的。從結果來看,第一種方法并不比另2種方法消耗多,甚至還更有優勢,這點和手冊上的說明明顯不一致。

測試系統:win 7旗艦

瀏覽器:chrome 52.0.2739.0 m

以上這篇淺談JS中的三種字符串連接方式及其性能比較就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 原平市| 林口县| 神农架林区| 水城县| 桐梓县| 五台县| 临夏市| 蒲江县| 长岛县| 邢台县| 楚雄市| 沽源县| 邹城市| 巴塘县| 湖南省| 石景山区| 东宁县| 富锦市| 顺昌县| 大新县| 孝昌县| 鸡泽县| 浦县| 三门峡市| 顺义区| 安仁县| 乌鲁木齐县| 克拉玛依市| 长泰县| 普洱| 正蓝旗| 乐平市| 蓬莱市| 沁水县| 黄大仙区| 南乐县| 日土县| 射阳县| 东方市| 于田县| 聂拉木县|