网络编程
位置:首页>> 网络编程>> JavaScript>> JScript下Array对象的性能问题(4)

JScript下Array对象的性能问题(4)

作者:hax 来源:hax的技术部落格 发布时间:2009-02-15 12:28:00 

标签:jscript,array,数组,性能,对象

那么JScript的开发者为什么要采用这样一个算法呢?

其实,如果从稀疏数组的角度看,这个算法是可行的,而且在某些条件下性能很好,比如对于以下:

var a = new Array(100000) 
a.length = 10 

在这次对length的改变中,上述算法飞快的完成,因为这个数组没并有什么实际元素可遍历!

所以JScript的开发者或许是特意做了这样的优化算法!!

然而讽刺的是,这本质上是一个极其愚蠢的优化!!

通常我们在用Array的时候,很少拿它当稀疏数组用!因为如果我们确实要用一个稀疏数组,我们完全可以直接用普通对象(即hash)。

就算我们经常使用稀疏数组——诚然,在一个稀疏数组时,前面所描述的最显白的算法,可能并不高效,但是稍加分析就可以看出,那样的算法要出现性能问题,只能是如下形式的代码:

for(var i=0;i<arrays.length;i++) {   
  arrays[i].length = 0   
}  

其中每个arrays[i]都是稀疏数组。

这样的代码我是没有见过。

对于单个稀疏数组来说,要出现性能问题,除非你这样:

for(var i=0;i<count;i++) {   
  array = new Array(50000)   
  ...   
  array.length = 0   
}  

然而几乎没有人会写这样的代码

——而且 array.length=0 这句造成性能问题的语句根本是多余的。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com