FLASH下载

设为首页
繁體中文
闪客留言

 首页 | FLASH动画 | FLASH专辑 | FLASH短片 | FLASH游戏 | FLASH歌曲 | FLASH教程 | Flash播放器代码
您当前的位置:flash下载 -> FLASH教程 -> FLASH技巧 -> 文章内容  
栏目导航 相关文章
· FLASH基础 · FLASH实例教程
· FLASH技巧 · AS教程


setInterval测试报告

作者:转载  来源:[闪客]  发布时间:2006-5-22 21:19:02  编辑人:[FLASH教程]

减小字体 增大字体


  之前对于setInterval的一些性能多多少少也有些听闻,不过一直没有测试,今天我特意测试了一下,主要也是因为之前游戏的需要.得出了几个结论与建议.对测试过程没有兴趣的朋友可以直接跳过看后面的结论与建议.

  首先测试的是timer的递增对资源的影响.帧频为12fps.n=1,结果当timer递增时CPU与内存都缓慢递增,表明setInterval用得频繁对性能还是有一定影响的.

  程序代码:

var n:Number=10;var timer:Number;function test() {    trace(timer);    clearInterval(timer);    timer = setInterval(test, n);}timer = setInterval(test, n);



  之后再测试对同一个setInterval,不同频率的n值时真正的频率,代码如下:

  程序代码:

var n:Number=10;var timer:Number; var old:Number=getTimer();function test() {    var m:Number=getTimer();    trace(1000/(m-old));    trace("----------------------------------");    old=m;}timer = setInterval(test, n);

测试结果如下(平均结果,有随机的跃变,两个数字代表在两个数字之间跃变):

12fps:
n Hz
1 125
5 125
8 125
10 62.5
12 62.5
20 42
25 32,37
50 18
100 5.7
200 3.78(稳定)
500 1.89(稳定)
1000 0.946(稳定)
--------------------------
20fps:
n Hz
1 200
5 200
8 100
10 90,100
12 66.7
20 50(稳定)
25 40(稳定)
50 20
100 10
200 4.87
500 2
1000 0.97(稳定)
--------------------------
50fps:
n Hz
1 500(稳定)
5 166.7
8 111,125
10 91,100
12 76.9,83.3
20 47.6,50
25 23.8
50 20
100 10
200 4.87
500 2
1000 0.97(稳定)
--------------------------

  根据以上数据可以得出关于setInterval的三点结论:

  1. 时间间隔虽然由n指定,但是有一个"物理上限",到达某一间隔后再也不能缩小间隔了,比如12fps时的物理上限是125ms,即8fps.

  2. 间隔与帧频越接近,则误差越小.

  3. 当间隔增大到某一界限时,就变得比较稳定,且误差较小,与帧频无关.

  另外,根据实验数据还能得出以下三个结论:

  1. 当n值比较大时(比如n=1,5,8,10),无论帧频多少,在起初的几次间隔时间都比较大,然后才逐渐趋向于某一定值.

  2. 在n=10左右时间隔时间会有一次跃变,数值会突然下降原因未知.

  3. 大多数时候间隔数值会在几个数值之间跃变.

  综上,在使用setInterval时,其时间间隔参数真的只能起"参考作用",其具体数据是多少会因为各种情况而改变.因此我有以下三点建议:

  1. 不用的setInterval一定要用clearInterval把timer标识清除掉.

  2. n值不宜过高,太高则没有意义,对资源也会有额外浪费.

  3. 帧频宜与n值相距不大,帧频*n=1000左右是最好的效果.如果不行,宁愿让帧频高点.setInterval低点.

  来源:http://www.xfykzz.com/blog/blogview.asp?logID=275

(完)

[] [返回上一页] [打 印]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [查看评论>>>]