`

AS3解疑:三种 for 循环的效率

 
阅读更多
AS3 提供了三种循环 for、forin、foreachin,这里测试一下三种方式的效率问题。
测试数据是一个 1000W 字符串的 Array,循环 push 到新的 Array 中。唯一不同的就是for的方式。为了防止GC造成的影响,每次输出后都会强制GC一次。

================================================
for (var i : int = 0; i < testDatas.length; i++)
times:10000000 used time:3286
times:10000000 used time:3343
times:10000000 used time:3345
times:10000000 used time:3337
times:10000000 used time:3342
times:10000000 used time:3292
times:10000000 used time:3304
times:10000000 used time:3380
times:10000000 used time:3312
times:10000000 used time:3240
================================================
for (var i : int = 0; i < length; i++)
times:10000000 used time:2526
times:10000000 used time:2550
times:10000000 used time:2601
times:10000000 used time:2502
times:10000000 used time:2530
times:10000000 used time:2549
times:10000000 used time:2548
times:10000000 used time:2535
times:10000000 used time:2548
times:10000000 used time:2533
================================================
for (var i : String in testDatas)
times:10000000 used time:86710
times:10000000 used time:11072
times:10000000 used time:11810
times:10000000 used time:10690
times:10000000 used time:10633
times:10000000 used time:10653
times:10000000 used time:10675
times:10000000 used time:10627
times:10000000 used time:10653
times:10000000 used time:10721
================================================
for each (var i : int in testDatas)
times:10000000 used time:4093
times:10000000 used time:2988
times:10000000 used time:2961
times:10000000 used time:2961
times:10000000 used time:2959
times:10000000 used time:2991
times:10000000 used time:2997
times:10000000 used time:2963
times:10000000 used time:2957
times:10000000 used time:3044

测试结果:
1 foreach 效率最高,传统 for 效率也不错。
2 使用大家推荐的“将length保存为变量”的方法有 15% 的性能提升。
3 forin 是最消耗性能的。主要原因是内存消耗过大(瞬间暴增500MB),造成的大量GC。

结论:
1 尽量使用 foreach,效率不错,代码更加清晰。
2 传统 for 使用变量存储数组 length 也有不错的性能。
2 尽量少用 forin,内存和实践上都消耗很大。
分享到:
评论

相关推荐

    解疑:为什么ZServer4D不能在线程中使用1

    这种方式适合于简单的小规模应用,但在高并发和需要高效资源利用的场景下,阻塞模式的效率会大大降低。 而异步通信则是另一种策略。在这种模式下,当发起网络操作时,程序不会等待其完成,而是立即返回并继续执行...

    解疑:为什么通过网络传任何文件都要验证1

    它通过三次握手建立连接,并在整个传输过程中实施数据校验和重传机制,确保数据的无丢失和顺序正确性。因此,使用TCP协议传输数据时,我们通常认为它是安全的,不需要额外的验证步骤。 然而,数据的生成和处理过程...

    OPENXML第三个参数解疑

    OPENXML第三个参数解疑 OPENXML( idoc int [ in] , rowpattern nvarchar [ in ] , [ flags byte [ in ] ] ) [ WITH ( SchemaDeclaration | TableName ) ] idoc XML 文档的内部表式形式的文档句柄。 通过调用 sp_...

    三环五步循环大课堂教学模式.doc

    【三环五步循环大课堂教学模式】是一种创新的教育理念和教学策略,旨在激发学生的学习积极性,提升课堂教学效率,促进学生的全面发展。该模式的核心在于“相信学生、解放学生、发展学生”的三位一体理念,强调教师的...

    Access数据库解疑专家

    3. **查询构建**:使用SQL语言或Access内置查询工具进行选择、连接、聚合等多种类型的查询,以获取所需信息。 4. **窗体与报表**:设计和使用窗体来输入、查看和编辑数据,以及制作报表进行数据分析和展示。 5. **...

    概率中互斥对立独立概念解疑.ppt

    "概率中互斥对立独立概念解疑" 概率论中,互斥、对立、独立是三个重要的概念,理解它们的区别和关系是非常必要的。本文将对这三个概念进行详细的解释和比较。 1、必然事件与概率为 1 事件的区别: 必然事件是指在...

    高中语文 表达交流《想象世界 学习虚构》自学、联想、解疑教学模式的基本内涵及运用素材 新人教版必修2.doc

    【自学、联想、解疑】教学模式是一种以学生为中心,注重培养自主学习能力和创新思维的教学策略,主要应用于高中语文表达交流课程中。该模式强调在教师的指导下,学生通过自学、联想、解疑和归纳四个步骤,深入理解和...

    项目管理中的执行与监督解疑

    3. **绩效评估**:评估团队成员的工作表现,提供反馈,激励团队士气,促进工作效率。 4. **问题解决**:当发现问题或冲突时,项目经理需迅速介入,分析原因,提出解决方案,并协调各方资源解决问题。 5. **合规性...

    Access数据库解疑专家(PDG)

    《Access数据库解疑专家》是一本专注于教授Access数据库管理与应用的教程,旨在帮助用户解决在实际操作中遇到的各种问题。Access是微软公司开发的一款关系型数据库管理系统(RDBMS),广泛应用于数据存储、数据分析...

    常见客户问题解疑.pdf

    常见客户问题解疑.pdf常见客户问题解疑.pdf常见客户问题解疑.pdf常见客户问题解疑.pdf常见客户问题解疑.pdf常见客户问题解疑.pdf

    Access数据库解疑专家.zip

    3. PDF文件:这是一种通用的文档格式,Adobe Reader 6.0可以打开它。PDF文件可能包含Access数据库的示例、指南或者最佳实践,读者可以通过Adobe Reader进行查阅。 在“accessjyzj”这个压缩包文件中,很可能包含了...

    高二数学解疑概率问题中三个疑点PPT课件.pptx

    这篇PPT课件主要探讨了概率问题中的三个关键点,涉及随机事件的理解、两两独立与相互独立事件的区分以及必然事件的应用。首先,我们来看第一个知识点: **随机事件的基本事件理解**: 随机事件的基本事件是指构成该...

    搭三段教学平台引课堂改革潮流.ppt

    3. 课后三段 (内化迁疑): - 作业巩固:学生独立完成作业,教师进行质量评价,巩固知识。 - 复习记忆:及时复习,规律记忆,构建知识网络。 - 测评迁移:通过测试,查漏补缺,促进知识迁移。 “三段教学”重视...

    ADI仿真器常见故障解疑

    标题《ADI仿真器常见故障解疑》涉及的IT知识点主要围绕美国模拟器件公司(Analog Devices, Inc.)旗下的一款名为ADZS-HPUSB-ICE的仿真器。当该仿真器在连接ADSP处理器时出现故障或报错,测试结果却显示一切正常的情况...

    THINKPAD E40部分问题解疑

    3. **关闭无线网卡**:如果希望关闭无线网卡以节省电力和减少热量,可在BIOS中将其设置为OFF。 4. **USB供电设置**:对于不希望在关机状态下通过USB口为手机等设备供电以及防止关机后电池大量掉电的情况,应将相关...

    安卓开发环境搭建教程及初学问题解疑

    3. Eclipse IDE:Eclipse是一个流行的集成开发环境,适用于多种编程语言,对安卓开发提供了很好的支持。推荐使用Eclipse 4.2 Juno版本。 二、软件安装 1. JDK的安装:下载对应版本的JDK安装包,安装时选择Android...

    生物安全柜的性能解疑

    首先,生物安全柜分为一级、二级和三级,每种级别对应不同的防护等级。一级生物安全柜主要用于防止实验对象对实验者的暴露,适用于处理低风险生物材料;二级生物安全柜则增加了向下的气流以保护环境,适用于中等风险...

    三年级数学下册 租车教案 北师大版 教案.doc

    这篇文档是针对小学三年级下册数学课程的一份租车教案,主要目标是教授学生如何运用乘法知识解决实际问题,培养他们的策略思维,并体会数学在日常生活中的应用。教案以一场春季出游活动为背景,引导学生探索如何在...

    java解惑--疑难问题解疑

    本文将针对"java解惑--疑难问题解疑"的主题,对一些常见的Java疑难问题进行详细解析,旨在帮助初学者更好地理解和解决这些问题。 1. **内存管理与垃圾回收**:Java通过自动垃圾回收机制来管理内存,这为开发者减轻...

    LBS位置服务解疑.pdf

    3. **社交应用**:与朋友分享位置信息。 4. **健康和健身**:记录运动轨迹和健康数据。 5. **紧急救援**:在紧急情况下快速定位并实施救援。 6. **智能交通系统**:优化城市交通流量,减少拥堵。 #### 五、LBS的...

Global site tag (gtag.js) - Google Analytics