JScript下Array对象的性能问题

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

今天看了微软JScript官方blog上去年的两篇文章:
http://blogs.msdn.com/jscript/archive/2008/03/25/performance-optimization-of-arrays-part-i.aspx
http://blogs.msdn.com/jscript/archive/2008/04/08/performance-optimization-of-arrays-part-ii.aspx

讲的是IE8对Array性能的改进,其中也解释了过去JScript对Array的内部实现及导致的性能问题。

狗狗了一下,似乎没有中文文章介绍过,所以我就写一篇来稍作介绍——不过并非翻译——微软的人总不好意思自己骂自己——而我素来要痛打落水狗的。

首先,目前JScript中数组操作是很慢滴,有多慢呢?我们引用一下JScript团队第一篇blog的数据: 


此段代码,IE7用了7秒,而IE8仅仅用时18毫秒。

如果你看了第一篇blog中所解释的原因,请注意

——其实它在忽悠你,真正的原因在第二篇里。

我这里有有个更加简单的测试代码:


你可以改变SIZE和count的值来观察。

基本上,pop()方法或者任何导致length减小的操作,都是非常耗费的——大体上与数组实际包含元素个数成正比。

这才是真正的性能杀手。

而且这一操作所要遍历的元素甚至包括非正整数索引(而只有索引为uint32才会被认为是数组元素):


可以发现结果也是基本与元素个数成正比。但是比前面要快一些。原因后面解释。

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

猜你喜欢

  • 大内存SQL Server数据库的加速剂

    2009-03-06 14:18:00
  • SQL 2008邮件故障排除:发送测试电子邮件

    2008-12-02 14:28:00
  • 让ASP组件来保护你的网站,自定义加密方法的使用

    2009-11-07 19:27:00
  • MySQL数据库的23个特别注意事项

    2010-08-08 14:43:00
  • IE8将是IE的最后一个版本?

    2009-03-12 12:44:00
  • 如何让用户再次访问我的网站时不需再提交相关信息?

    2010-05-16 15:05:00
  • SQL Server上进行表设计时表的主键设计问题

    2010-06-24 16:10:00
  • 巧用JDBC实现对MySQL的“增删改查”

    2008-12-31 15:12:00
  • 有时用户并不需要引导

    2009-07-17 18:48:00
  • 解决MSSQL下“不能在手动或分布事务方式下创建新的连接”的问题

    2008-07-15 12:48:00
  • jQuery.animate简单分析

    2010-06-26 12:45:00
  • asp下实现代码的“运行代码”“复制代码”“保存代码”功能源码

    2011-04-14 10:39:00
  • Google的设计导引

    2008-04-06 14:18:00
  • 很酷的JQuery Solar System

    2007-12-15 08:09:00
  • asp如何实现按照输入汉字提示拼音功能?

    2010-05-18 18:37:00
  • [欣赏] 情景互动广告

    2008-08-06 12:59:00
  • 详解SQL Server分布式查询

    2010-09-19 09:07:00
  • 使用javascript+xml技术实现分页浏览

    2008-05-29 13:49:00
  • 如何应对SQL Server数据库崩溃

    2008-11-24 17:25:00
  • SQL SERVER 与ACCESS、EXCEL的数据转换方法分享

    2012-02-25 20:17:22
  • asp之家 网络编程 m.aspxhome.com