天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

JS 字符串連接[性能比較]

一、ECMAScript的字符串是不可變的,即它們的值不能改變,因此當你寫出下面的代碼的時候發生了什么呢?
Js代碼
復制代碼 代碼如下:
var str = "Hello ";
str += "world";

執行的步驟如下:
創建存儲“Hello“的字符串
創建存儲”world“的字符串
創建存儲連接結果的字符串
把str的當前內容復制到結果中
把“world”復制到結果中
更新str,使它指向結果
每次完成字符串的連接都會執行步驟2-6,使得這種操作非常消耗資源。想象一下重復這個過程幾百次,甚至幾千次,那性能如何?
二、那么再看看下面的代碼,來解決這種窘況
Js代碼
復制代碼 代碼如下:
var arr = new Array;
arr[0] = "Hello ";
arr[1] = "world";
var str = arr.join("");

執行的步驟如下:
創建存儲結果的字符串
把每個字符串復制到結果中的適當位置
這樣,無論數組要引入多少字符串都不成問題,因為只有在調用join()方法時候才會發生連接操作。
三、覺得操作很復雜?代碼不能確切反應它的意圖?那么我們用對象的解決方式吧,使它更容易理解,用StringBuffer類來封裝該功能:
Js代碼
復制代碼 代碼如下:
function StringBuffer() {
this._strs = new Array;
}
StringBuffer.prototype.append = function (str) {
this._strs.push(str);
};
StringBuffer.prototype.toString = function() {
this._strs.join("");
};

好了,感受一下吧,現在如何操作字符串呢?
Js代碼
復制代碼 代碼如下:
var sb = new StringBuffer();
sb.append("Hello ");
sb.append("world");
var result = sb.toString();

四、似乎色香味俱全了,但是吃下去的功效如何?
Js代碼
復制代碼 代碼如下:
var tStart = new Date();
var str = "";
for(var i=0;i<10000;i++)
{
str += "text"
}
var tEnd = new Date();
document.write("原始的方法加號 拼接10000個字符串 花費時間:"+(tEnd.getTime()-tStart.getTime())+"秒");
var oSB = new StringBuffer();
tStart = new Date();
for(var i=0;i<10000;i++)
{
oSB.append("text");
}
var sRst = oSB.toString();
tEnd = new Date();
document.write("<br/>StringBuffer 拼接10000個字符串 花費時間:"+(tEnd.getTime()-tStart.getTime())+"秒");

可能你已經猜到了,StringBuffer要比+快,到底快多少呢?我的測試結果:
Js代碼
FF3.0.10
原始的方法加號 拼接10000個字符串 花費時間:3豪秒
StringBuffer 拼接10000個字符串 花費時間:8豪秒
IE7
原始的方法加號 拼接10000個字符串 花費時間:15豪秒
StringBuffer 拼接10000個字符串 花費時間:16豪秒
IE8
原始的方法加號 拼接10000個字符串 花費時間:15豪秒
StringBuffer 拼接10000個字符串 花費時間:16豪秒
Chrome1.0.154.46
原始的方法加號 拼接10000個字符串 花費時間:1豪秒
StringBuffer 拼接10000個字符串 花費時間:2豪秒
五、怎么回事?
恩?眼睛花了?還是測試結果貼錯了?還是……?
一切都沒有錯!
2006年11月此書出版《JavaScript高級程序設計》在84-85頁,就是我上面的內容,我的測試結果卻和它的完全相反,技術的變革還是……?
我覺得是一個教訓!深刻的教訓!不知道哪看了這篇文章的人會有何感想。

JavaScript技術JS 字符串連接[性能比較],轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 噜噜噜狠狠夜夜躁 | 18禁无遮遮挡羞漫画免费阅读 | 大学生一级毛片免费看 | 亚洲第一综合天堂另类专 | 暖暖视频 免费 高清 日本8 | 草莓国产视频免费观看 | 中文字幕亚洲乱码熟女在线萌芽 | 亚洲va久久久久 | 国产成人免费视频 | 蜜桃AV色欲A片精品一区 | 香蕉久久夜色精品国产小说 | 国产午夜不卡在线观看视频666 | 扒开双腿疯进出爽爽爽动态图 | 99久久人妻无码精品系列性欧美 | 538在线视频一区二区视视频 | 久久88综合 | 无遮掩H黄纯肉动漫在线观看星 | 狠狠色香婷婷久久亚洲精品 | 亚洲 综合 自拍 精品 在线 | wankz tv videos国产 | 2020年国产精品午夜福利在线观看 | 中国欧美日韩一区二区三区 | 日本高清免费在线 | 色老99九久精品偷偷鲁 | 国产美女又黄又爽又色视频网站 | vr亚洲成年网址在线观看 | 久久中文字幕人妻AV熟女 | 精品久久久噜噜噜久久7 | 免费A级毛片无码鲁大师 | 亚洲黄色免费观看 | 午夜福利免费0948视频 | 国产精品久久久久婷婷五月色 | 精品国产在线国语视频 | 一区二区不卡在线视频 | 91黄色大片| 亚洲精品永久免费 | 俄罗斯一级毛片aaaa | 抽插H浊水H嫩B父皇 虫族bl文全肉高h | 国产欧美无码亚洲 | 日韩精品熟女一区二区三区中文 | 乱h好大噗嗤噗嗤烂了 |