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

本文测试了AS3中for、forin、foreachin三种循环方式的效率,并对比了使用传统for循环时存储数组长度的方法对性能的影响。测试结果显示foreach效率最高,for循环次之,forin循环效率最低且内存消耗过大。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值