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

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

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

这是因为我们的字符串索引是字母"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实际的实现并没有做此优化】

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

猜你喜欢

  • SQL列名无效 sql查询列名 sql返回列名

    2009-09-03 13:19:00
  • 23个MySQL数据库安全使用技巧

    2007-10-26 16:02:00
  • JavaScript 各种动画渐变效果

    2008-09-02 10:38:00
  • 网页代码中键盘操作相关标签教程

    2010-03-18 15:56:00
  • 渗透和改变 非洲web 2.0网站Logo

    2008-01-22 13:31:00
  • SQLServer 2000 升级到 SQLServer 2008 性能之需要注意的地方之一

    2012-02-25 19:44:26
  • Sql server数据库优化

    2010-04-06 19:17:00
  • asp如何获知页面上的图象的实际尺寸?

    2009-11-24 20:50:00
  • 如何使用FSO修改文件夹的名称

    2008-10-11 14:24:00
  • 超越MYSQL,ACCESS复合承载

    2008-12-09 13:31:00
  • SQL Server 获取插入记录后的ID(自动编号)

    2009-09-10 11:31:00
  • Oracle 数据 使用游标

    2009-07-02 12:14:00
  • 网站构成的基本元素—网页布局

    2008-01-04 09:49:00
  • 为WordPress增加微博功能

    2010-08-31 15:01:00
  • asp如何用HtmlEncode来显示Unicode编码?

    2010-06-12 12:49:00
  • 使用NetBox 编译 asp 为exe应用程序

    2009-11-29 16:13:00
  • conn.execute(sql)后面加(0)和不加的区别

    2009-06-24 11:13:00
  • select 终极美化

    2007-10-16 17:57:00
  • 实现框架页面iframe的背景透明方法

    2008-06-18 12:21:00
  • 写SQL语句的经验

    2009-04-13 16:02:00
  • asp之家 网络编程 m.aspxhome.com