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

首頁 > 編程 > JavaScript > 正文

再論Javascript下字符串連接的性能

2019-11-20 23:54:57
字體:
來源:轉載
供稿:網(wǎng)友

1 如何進行字符串連接?

首先讓我們來回顧一下字符串連接的兩種常用方法:
1.1 使用字符串連接運算符

常用的語言(如Java、C#、PHP等)都有字符串連接運算符,Javascript也不例外,代碼示例:

復制代碼 代碼如下:

var str = "";
str = str + "a";

1.2 使用數(shù)組

在常用的語言中,字符串連接運算的性能普遍不高,為此在C#中就專門提供了StringBuilder(Java中提供了StringBuffer)用于連接字符串。而在Javascript中就出現(xiàn)了通過Array模擬StringBuilder的方案。
復制代碼 代碼如下:

var str = [];
for (var i = 0; i < 100; i++) {
  str[i] = "12345";
}
str = str.join("");

2 測試

下面通過復制字符串的過程來測試兩種方法的性能:
2.1 通過字符串連接運算符進行復制:
復制代碼 代碼如下:

function copyByOperator(str, times) {
  var newStr = "";
  for (var i = 0; i < times; i++) {
    newStr += str;
  }
  return newStr;
}

2.2 通過數(shù)組進行復制:
復制代碼 代碼如下:

function copyByArray(str, times) {
  var newStr = [];
  for (var i = 0; i < times; i++) {
    newStr[i] = str;
  }
  return newStr.join("");
}

str采用一段固定的HTML字符串,長度是61。
2.3 IE下的測試

考慮到IE的性能比較差,先用小的times值(6000)在IE 6、IE 7和IE 8下面測試。運行10次后取平均值,結果如下:
IE瀏覽器下的測試結果
瀏覽器copyByOperatorcopyByArray
IE 61780.4ms9.5ms
IE 71754.6ms7.7ms
IE 81.6ms9.4ms

IE6、7與IE8的測試結果相距甚遠,很明顯地,IE 8對字符串連接運算進行了優(yōu)化,效率已經(jīng)高于數(shù)組復制法

2.4 各種瀏覽器下的測試

下面再用比較大的times值(50000)對最新版本的各種瀏覽器進行測試。

各種瀏覽器的測試結果
瀏覽器copyByOperatorcopyByArray
IE 821.8ms54.7ms
Firefox 3.640.9ms27.9ms
Chrome 44.4ms10.9ms
Safari 4.0.541.6ms34.6ms
Opera 10.5033.1ms23ms

這個結果真是出人意料。IE 8下的字符串連接運算竟然把Chrome以外的瀏覽器都打敗了,那些老說IE性能低下的可要注意點了。而在Chrome下也出現(xiàn)了字符串連接運算比數(shù)組復制法高效的情況。

3 總結

瀏覽器的性能在不斷地提高,作為前端工程師,也要適時調(diào)整Javascript程序的優(yōu)化策略,以獲得最佳的性能。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙海市| 顺昌县| 清流县| 衡东县| 桓台县| 锡林郭勒盟| 苍溪县| 卢龙县| 错那县| 崇礼县| 四子王旗| 绵竹市| 施秉县| 女性| 岚皋县| 塘沽区| 兴业县| 岳阳县| 延边| 五峰| 肃宁县| 勃利县| 宾川县| 灵石县| 琼海市| 化隆| 临西县| 贡山| 深州市| 江孜县| 诸城市| 观塘区| 虹口区| 二手房| 正镶白旗| 安龙县| 柞水县| 错那县| 武乡县| 巴青县| 恩施市|