【发布时间】:2012-07-11 21:49:06
【问题描述】:
我有一段代码运行到一个循环中,除以 100,这减少了我的 fps 计数。
在大多数情况下,int/uint 类型除以 100,得到一个简单的 Number。
我只是想知道任何优化它的方法。
编辑: @scriptocalypse 建议的小基准 - 乘以 0.01:
import flash.utils.getTimer;
for(var k:Number = 20; k > 0; k--)
{
var a:int = getTimer();
var o:Number = 100;
var p:Number;
for(var i:Number = 100000000; i > 0; i--)
{
p = o * 0.01; // took 423~510 <--------------
//p = o / 100; // took 713~768 <--------------
}
var b:int = getTimer();
trace( b - a);
}
【问题讨论】:
-
你能解释一下你在做什么吗?大约有 100% 的机会改进你正在做的事情的方式会比改变一个单一的部门操作带来更好的改进。
-
@BlueRaja-DannyPflughoeft 我更正了所有其他可能成为问题的问题。游戏已经基本完成,我只是想改进一些关键代码片段,这些代码在某些设备上可能会有点慢。
-
但更多信息将帮助我们帮助您优化。例如,在进行除法之后,您将如何处理这些数字 - 将它们加在一起?先把它们全部加起来,然后再分开,可能会更快。还是您要划分数组中的每个条目?您也许可以并行化,甚至更好地将任务偏移到 GPU (我对 Actionscript 的了解不够,无法确定)。或者,也许我们可以建议一种替代算法来实现您想要的没有数百万个部门。但是,如果不知道您首先要做什么,我们就无法做到这一点!
标签: actionscript-3 math optimization