javascript string字符串優(yōu)化問(wèn)題
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>test</title>
<script type="text/javascript">
function winProps(){
var message = [];
var str;
var data = new Date();
var mils1 = data.getTime();
//array數(shù)組
for(var i = 0; i<500000;i++)
message.push("This window is ");
message.join(" ");
data = new Date();
var mils2 = data.getTime();
arrayMils = mils2 - mils1;
//字符串直接連接
for(var i = 0; i<500000;i++)
str+="This window is ";
data = new Date();
var mils3 = data.getTime();
stringMils=mils3-mils2;
//顯示內(nèi)容,不重要
var mes = [];
mes.push("時(shí)間1:");
mes.push(mils1);
mes.push("\n時(shí)間2");
mes.push(mils2);
mes.push("\n時(shí)間3");
mes.push(mils3);
mes.push("\narray所用時(shí)間");
mes.push(arrayMils>=0?arrayMils:arrayMils+1000);
mes.push("\nstr連接所用時(shí)間");
mes.push(stringMils>=0?stringMils:stringMils+1000);
alert(mes.join(" "));
}
</script>
</head>
<body>
<input type="button" value="點(diǎn)我" onclick="winProps();"/>
</body>
結(jié)果不像一般的說(shuō)法,用array會(huì)快。在ie9,8。ff,google,搜狗等ie核心的瀏覽器下測(cè)試了一下,確實(shí)在數(shù)量級(jí)100000以上的測(cè)試中array方法比用“+”的方法會(huì)慢。
1000000次的結(jié)果
ie第一次(大概,ie復(fù)制不了,圖就不截了)
array所用時(shí)間 890
str連接所用時(shí)間 450
ie可能是內(nèi)存沒(méi)有回收第二次點(diǎn)會(huì)彈出警告,并且時(shí)間用到1400和1200,點(diǎn)多幾次后,+=的連接方式耗時(shí)回到400,難倒是array對(duì)象沒(méi)有回收?打開任務(wù)管理器,再刷新一次ie瀏覽器,內(nèi)存降了100多m,應(yīng)該研究一下ie的javascript內(nèi)存回收機(jī)制。
ff
時(shí)間1: 1312102053720
時(shí)間2 1312102053842
時(shí)間3 1312102053882
array所用時(shí)間 122
str連接所用時(shí)間 40
google(也復(fù)制不了數(shù)據(jù))
array所用時(shí)間 200
str連接所用時(shí)間 100
opera
時(shí)間1: 1312102258270
時(shí)間2 1312102258460
時(shí)間3 1312102258592
array所用時(shí)間 190
str連接所用時(shí)間 132
順便說(shuō)一下,在數(shù)據(jù)到5000000后ff拋出了個(gè)異常,應(yīng)該是內(nèi)存溢出了。。。(ps,不是很懂)
錯(cuò)誤: uncaught exception: 8.375396749959738e-274
在ie下測(cè)試果斷警告,再后來(lái)out of memory。
當(dāng)然怎么大的數(shù)據(jù)連接,在現(xiàn)在的網(wǎng)頁(yè)是不可能出現(xiàn),數(shù)據(jù)處理應(yīng)該是在后臺(tái)做的。老師的主機(jī)不敢裝這么多瀏覽器
其實(shí)是array的jion,太消耗時(shí)間。沒(méi)有加入這一句之后opera,google就顯示出array的優(yōu)勢(shì):
opera結(jié)果:
時(shí)間1: 1312101715553
時(shí)間2 1312101715622
時(shí)間3 1312101715749
array所用時(shí)間 69
str連接所用時(shí)間 127
[code]
ie結(jié)果
array所用時(shí)間700
str連接所用時(shí)間500
ff
[code]
時(shí)間1: 1312101925895
時(shí)間2 1312101925945
時(shí)間3 1312101925979
array所用時(shí)間 50
str連接所用時(shí)間 34
array所用時(shí)間17
str連接所用時(shí)間100
去查查jion的機(jī)制再寫吧。
ps:瀏覽器版本
google12.0.742.122
ff5.0.1
opera11.50
ie8.0.6001.18702
pss:ie處理速度不給力
- java String 類的一些理解 關(guān)于==、equals、null
- 全面解釋java中StringBuilder、StringBuffer、String類之間的關(guān)系
- java中String與StringBuilder的區(qū)別
- java中String的常見(jiàn)用法總結(jié)
- java判斷字符串String是否為空問(wèn)題淺析
- JAVA中字符串函數(shù)subString的用法小結(jié)
- Java的string類為什么是不可變的
- Java中String類(字符串操作)的10個(gè)常見(jiàn)問(wèn)題和解決方法
- Java進(jìn)階教程之String類
- Java中的StringBuilder性能測(cè)試
- Java中String性能優(yōu)化
相關(guān)文章
基于Bootstrap模態(tài)對(duì)話框只加載一次 remote 數(shù)據(jù)的解決方法
下面小編就為大家?guī)?lái)一篇基于Bootstrap模態(tài)對(duì)話框只加載一次 remote 數(shù)據(jù)的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07判斷文字超過(guò)2行添加展開按鈕,未超過(guò)則不顯示,溢出部分顯示省略號(hào)
這篇文章主要介紹了判斷文字超過(guò)2行添加展開按鈕,未超過(guò)則不顯示,溢出部分顯示省略號(hào),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04javascript中的parseInt和parseFloat區(qū)別
這篇文章用簡(jiǎn)單的小例子演示了parseInt和parseFloat區(qū)別,有需要的朋友可以參考一下2013-07-07解決JS請(qǐng)求服務(wù)器gbk文件亂碼的問(wèn)題
本文給大家介紹js請(qǐng)求服務(wù)器gbk文件亂碼問(wèn)題,解決辦法需要設(shè)置xhr.overrideMimeType("text/csv;charset=gb2312");才正確,具體代碼怎么設(shè)置,將在本文中給大家提到,需要的朋友一起學(xué)習(xí)吧2015-10-10某頁(yè)碼顯示的helper 少量調(diào)整,另附j(luò)s版
某頁(yè)碼顯示的helper 已經(jīng)少量調(diào)整,另附j(luò)s版,需要的朋友可以參考下。2010-09-09p5.js 畢達(dá)哥拉斯樹的實(shí)現(xiàn)代碼
這篇文章主要介紹了p5.js 畢達(dá)哥拉斯樹的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03window.onbeforeunload方法在IE下無(wú)法正常工作的解決辦法
下面的代碼可以做到不管用戶是點(diǎn)擊了關(guān)閉,或者是在任務(wù)欄關(guān)閉、點(diǎn)擊后退、刷新、按F5鍵,都可以檢測(cè)到用戶即將離開的消息。2010-01-01完美解決input[type=number]無(wú)法顯示非數(shù)字字符的問(wèn)題
下面小編就為大家?guī)?lái)一篇完美解決input[type=number]無(wú)法顯示非數(shù)字字符的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02使用JavaScript計(jì)算前一天和后一天的思路詳解
這篇文章主要介紹了使用JavaScript計(jì)算前一天和后一天的思路,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12