JavaScript 在大容量数组的循环方面效率不尽人意,我曾经做过一个比对,与VBS的数组相比较,VBS的数组循环速度大致比JS要快一个数量级(http://community.csdn.net/Expert/TopicView.asp?id=4313487)。JS数组在一般的编程当中我们也不会太去注意它的效率问题:才几十个元素的数组效率即使差点你也看不出来,但节点量一大,比如几千、比如上万个节点量的数组循环,那效率问题就成了首要考虑解决的问题了。大容量数组的检索大致有以下几个应用:select做combo box时的快速匹配、树的查询、表格table排序或者检索等。
下面我来做一个测试,首先我先创建一个大容量的数组:
<SCRIPT LANGUAGE="JavaScript">
var n = 100000; //数组的最大容量
var a = new Array();
for(var i=0; i<n; i++)
{
a[i] = Math.random() +"";
}
</SCRIPT>
这样我就创建了一个长度为 100000 的字符型数组,然后我再检索字符串以 0.9999 开始的字符串,并存入另一个数组中。
<SCRIPT LANGUAGE="JavaScript">
var n = 100000; //数组的最大容量
var a = new Array();
for(var i=0; i<n; i++)
{
a[i] = Math.random() +"";
}
var begin = new Date().getTime();
var b = new Array();
for(var i=0; i<n; i++)
{
if(a[i].indexOf("0.9999")==0)
{
b[b.length] = a[i];
}
}
document.write("数组长度:"+ n);
document.write("<br>传统循环法耗时 "+ (new Date().getTime() - begin)
+" 毫秒!检索的结果:<strong title='"+ b.join(" ")
+"'>检索到 "+ b.length +" 个记录!</strong>");
</SCRIPT>
JavaScript 在大容量数组的循环方面效率不尽人意,我曾经做过一个比对,与VBS的数组相比较,VBS的数组循环速度大致比JS要快一个数量级(http://community.csdn.net/Expert/TopicView.asp?id=4313487)。JS数组在一般的编程当中我们也不会太去注意它的效率问题:才几十个元素的数组效率即使差点你也看不出来,但节点量一大,比如几千、比如上万个节点量的数组循环,那效率问题就成了首要考虑解决的问题了。大容量数组的检索大致有以下几个应用:select做combo box时的快速匹配、树的查询、表格table排序或者检索等。
下面我来做一个测试,首先我先创建一个大容量的数组:
<SCRIPT LANGUAGE="JavaScript">
var n = 100000; //数组的最大容量
var a = new Array();
for(var i=0; i<n; i++)
{
a[i] = Math.random() +"";
}
</SCRIPT>
这样我就创建了一个长度为 100000 的字符型数组,然后我再检索字符串以 0.9999 开始的字符串,并存入另一个数组中。
<SCRIPT LANGUAGE="JavaScript">
var n = 100000; //数组的最大容量
var a = new Array();
for(var i=0; i<n; i++)
{
a[i] = Math.random() +"";
}
var begin = new Date().getTime();
var b = new Array();
for(var i=0; i<n; i++)
{
if(a[i].indexOf("0.9999")==0)
{
b[b.length] = a[i];
}
}
document.write("数组长度:"+ n);
document.write("<br>传统循环法耗时 "+ (new Date().getTime() - begin)
+" 毫秒!检索的结果:<strong title='"+ b.join(" ")
+"'>检索到 "+ b.length +" 个记录!</strong>");
</SCRIPT>