as3 反向for循环测试总结
2016-02-25 17:01
281 查看
今天看adobe官方的性能优化策略文档里,有一条是反向for循环,以前没怎么注意,今天写代码测试了下。
经过测试得到结论如下:1,绝大多数时候,反向循环是比正向循环的性能要高。(我测试的时候,偶尔会出现正向循环的性能更高)。
2,当数据计算量越庞杂的时候,反向循环的性能比正向循环的提升越明显。当数据计算量比较小的时候,反向循环的比正向循环的快几毫妙,当计算量增大的时候,会快几十毫妙。
结论:推荐使用反向循环!
推测:其他语言估计也是存在这种情况,只是没有测试过,有做过测试的朋友告知一声,其他语言这种情况会提升多少!
package
{
import flash.display.Sprite;
import flash.utils.getTimer;
public class Test extends Sprite
{
private var count:int=9999900;
private var totalCount:int=0;
private var timer:int;
private var i:int=1;
public function Test()
{
addCount2();
addCount();
}
public function addCount():void
{
totalCount=0;
timer = getTimer();
for(i=1;i<=count;i++)
{
totalCount+=i;
}
timer=getTimer()-timer;
trace("正向:",timer,totalCount);
}
public function addCount2():void
{
totalCount=0;
timer = getTimer();
for(i=count;i>=1;i--)
{
totalCount+=i;
}
timer=getTimer()-timer;
trace("反向:",timer,totalCount);
}
}
}
经过测试得到结论如下:1,绝大多数时候,反向循环是比正向循环的性能要高。(我测试的时候,偶尔会出现正向循环的性能更高)。
2,当数据计算量越庞杂的时候,反向循环的性能比正向循环的提升越明显。当数据计算量比较小的时候,反向循环的比正向循环的快几毫妙,当计算量增大的时候,会快几十毫妙。
结论:推荐使用反向循环!
推测:其他语言估计也是存在这种情况,只是没有测试过,有做过测试的朋友告知一声,其他语言这种情况会提升多少!
package
{
import flash.display.Sprite;
import flash.utils.getTimer;
public class Test extends Sprite
{
private var count:int=9999900;
private var totalCount:int=0;
private var timer:int;
private var i:int=1;
public function Test()
{
addCount2();
addCount();
}
public function addCount():void
{
totalCount=0;
timer = getTimer();
for(i=1;i<=count;i++)
{
totalCount+=i;
}
timer=getTimer()-timer;
trace("正向:",timer,totalCount);
}
public function addCount2():void
{
totalCount=0;
timer = getTimer();
for(i=count;i>=1;i--)
{
totalCount+=i;
}
timer=getTimer()-timer;
trace("反向:",timer,totalCount);
}
}
}
相关文章推荐
- shell获取 linux 系统的位数
- java中设置虚拟机最大内存
- iOS开发之提交App前需要准备的材料
- CGRidCtrl控件 学习心得
- lighttpd-1.4.39 : state machine
- Android插件化开发 第四篇 [加载插件Activity]
- C# Process运行cmd命令的异步回显
- IOS学习 NSNavigationController1 父子页面跳转 导航栏隐藏
- service 抽取
- 对数据进行编码解码
- 在iOS 8中使用UIAlertController
- 一个低学历者的辛酸程序路(载抄CSDN)
- 调用系统的短信和发送邮件功能,实现短信分享邮件分享
- android手机锁屏后GPS模块发出的NMEA数据频率降低
- 冒泡排序
- nw.js node-webkit系列(8)Native UI API MenuItem的使用
- ObjC类与属性的copy关键字
- TS初探
- 浅谈Android app开发中Fragment的Transaction操作
- 安卓项目包命名规范及常见项目架构