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 这句造成性能问题的语句根本是多余的。


猜你喜欢
- 一、数据导入是所有数模编程的第一步编程求解一个数模问题,问题总会涉及一些数据。有些数据是在题目的文字描述中给出的,有些数据是通过题目的附件文
- 有时候,我们需要替换指定标签外的内容,而保留标签里面的内容不替换。比如当我们要在浏览器中显示出编辑器显示的原始格式时、需要将普通换行符“\n
- 导语提到《俄罗斯方块》(Tetris),那真是几乎无人不知无人不晓。其历史之悠久,可玩性之持久,能手轻轻一挥,吊打一 * 游戏。对于绝大多数小
- mysql 8.0.20 winx64.zip压缩版安装教程记录如下,分享给大家1.下载MySQL官网:链接直接点击链接也可以下载:mysq
- ASP 错误代码 说明 ASP 0100 内存不足 ASP 0101 意外错误 ASP 0102 需要字符串输入 ASP 0103 需要数字
- 经常会有人问我, PHP的数组, 如果用foreach来访问, 遍历的顺序是固定的么? 以什么顺序遍历呢? 比如: <?php $ar
- 联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是k
- 本文教大家用原生js实现的简单网页主页右下角的广告框效果,利用好绝对定位,点击X关闭广告,里面的内容不管动图或者视频都可以。 代码最简洁,j
- 判断字段是否存在:DROP PROCEDURE IF EXISTS schema_change; DELIMITER //CREATE PR
- 写这个文章绝对是偶然的偶然的机会,前年等一回的 元旦节,和 老婆上街 溜达,猛然想起买上一张福利彩票,结果屁都没有中上,开春第一
- python字符串查找函数的使用打开Python开发工具IDLE,新建‘findstr.py'文件,并写代码如下:s ='/
- 1、简介:Oracle的sql*plus是与oracle进行交互的客户端工具。在sqlplus中,可以运行sqlplus命令与sqlplus
- 以下的文章主要介绍的是MySQL 查询缓存的实际应用代码以及查看MySQL 查询缓存的大小 ,碎片整理,清除缓存以及监视MySQL 查询缓存
- 一、 在数据库排序查询优化上的差异。在讲解这个内容之前,为了读者能够清楚我讲的内容,我要先谈一个概念。命中率,它是指从内存中取得数据而不从磁
- 一、前言1.1 回归分析是用于研究分析某一变量受其他变量影响的分析方法,其基本思想是以被影响变量为因变量,以影响变量为自变量,研究因变量与自
- 读取docx文档使用的包是python-docx1. 安装python-docx包sudo pip install python-docx2
- 很多人都听过WAMP这个词吧,首先来看WAMP是什么意思?Windows下的Apache+MySQL+PHP,称为WAMP。属于WAMP环境
- numpy数组转置可以通过arr.T、arr.transpose()、arr.swapaxes()实现。数组转置 arr.T轴变换 arr.
- vue设置header使用vue-resource与vue-cookie实现页面登录,数据存储与后台的数据交互后端交互对vue中conten
- 本文实例讲述了Python抓取某只基金历史净值数据。分享给大家供大家参考,具体如下:http://fund.eastmoney.com/f1