台灣最大程式設計社群網站
線上人數
1497
 
會員總數:245468
討論主題:189226
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> JScript 效能測試(3): 基本陣列使用(寫值,改長度&清空)
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
JScript 效能測試(3): 基本陣列使用(寫值,改長度&清空)
價值 : 0 QP  點閱數:716 回應數:0

樓主

戀小葦
初級顧問
20437 27
7626 3313
發送站內信

操作 JScript 的陣列時, 免不了要改變陣列長度, 寫入值, 清空.
下面這兩段測試 script, 第一段是測試清空陣列的方式(利用改變陣列長度), 第二段是測試在陣列尾端加值的方式.
有興趣的人可以自己貼到記事本另存成 .js 玩玩看.


1. arrayObject = [] vs. arrayObject = new Array() vs. arrayObject.length = 0:
var tl=1000;
var at=[];
at.length=tl;

function initArrayValue(){
for(var i=0;i<tl;i++){
at[i]=[];
for(var j=0;j<tl;j++)
at[i][j]=j;
}
}

initArrayValue();
var st1=new Date().getTime();
for(var i=0;i<tl;i++)
at[i]=[];
st1=new Date().getTime()-st1;

initArrayValue();
var st2=new Date().getTime();
for(var i=0;i<tl;i++)
at[i]=new Array();
st2=new Date().getTime()-st2;

initArrayValue();
var st3=new Date().getTime();
for(var i=0;i<tl;i++)
at[i].length=0;
st3=new Date().getTime()-st3;

WScript.Echo(st1+' vs. '+st2+' vs. '+st3);
測試結果:
arrayObject = [] 的方式在我的電腦上平均值為 46.7 ms;
arrayObject = new Array() 的方式在我的電腦上平均值為 47.1 ms;
arrayObject.length = 0 的方式在我的電腦上平均值為 188.2 ms;
相差了將近 3 倍多.
不過令我驚訝的是, 1. & 2. 竟然差不多, 記得以前看過一篇測試報告說 new Array() 的效能比 [] 要慢上很多...@@
下次有空再針對這兩個方式作比較詳細的測試.



2. arrayObject.push(value) vs. arrayObject[index] = value vs. arrayObject[arrayObject.length] = value:
var tl=1000;
var at=[];
at.length=tl;

var st1=new Date().getTime();
for(var i=0;i<tl;i++){
at[i]=[];
for(var j=0;j<tl;j++)
at[i].push(j);
}
st1=new Date().getTime()-st1;

var st2=new Date().getTime();
for(var i=0;i<tl;i++){
at[i]=[];
for(var j=0;j<tl;j++)
at[i][j]=j;
}
st2=new Date().getTime()-st2;

var st3=new Date().getTime();
for(var i=0;i<tl;i++){
at[i]=[];
for(var j=0;j<tl;j++)
at[i][at[i].length]=j;
}
st3=new Date().getTime()-st3;

WScript.Echo(st1+' vs. '+st2+' vs. '+st3);
測試結果(因為差異還蠻明顯的, 所以就不平均了):
arrayObject.push(value) 的方式在我的電腦上大約為 6900~7000 ms;
arrayObject[index] = value 的方式在我的電腦上大約為 8400-8500 ms;
arrayObject[arrayObject.length] = value 的方式在我的電腦上大約為 9100-9200 ms;
搜尋相關Tags的文章: [ Javascript ] , [ JScript ] , [ Array ] , [ Named Array ] , [ length ] ,
本篇文章發表於2006-01-12 04:56
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.