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

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

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

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

那么为什么我们第二个例子会快一些呢?

这是因为我们的字符串索引是字母"i"开头的,而toUint32的实现,应该会一个字符一个字符的解析,当第一个字母是i时已然可知转换失败,直接返回了。以下是也以JS示意:

 

function toUint32(s) {   
  
  if (s == '') return -1   
  if (s.charCodeAt(0) == 48 && s.length > 1) return -1   
  
  var n = 0, d   
  for (var i = 0; i < s.length; i++) {   
    n *= 10   
    d = s.charCodeAt(i) - 48   
    if (d < 0 || d > 9) return -1   
    n += d   
    if (n >= 0xffffffff) return -1   
  }   
  return n   
}  

你也可以把前面第二段代码中的:
   arr['i' + i] = i;
换为
   arr[i + '00000000x'] = i

结果就会发现耗费时间更长了,因为toUint32必须解析到最后一个字符才知道转换失败。

【注:这里可以优化,因为uint32十进制最长是10个字符,所以可以先判断string的长度,超过10直接失败——问题是从测试结果来看,JScript实际的实现并没有做此优化】

0
投稿

猜你喜欢

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