如何优化除以100?

时间:2012-07-11 21:49:07

标签: actionscript-3 math optimization

我有一段代码在循环中运行,除以100,这减少了我的fps计数。

在大多数情况下, int / uint 类型被除以100,从而产生一个简单的数字

我只是想知道如何优化它。

编辑: 使用 @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);
}

3 个答案:

答案 0 :(得分:4)

我怀疑它并不是导致大部分问题的分歧,因为与其他操作相比,即使是缓慢的数学运算也应该相对较快。

虽然这个:

x * 0.01;

理论上应该比

更快
x / 100;

我仍然怀疑它不会产生太大的影响。你在循环中还做了什么?

答案 1 :(得分:3)

几乎可以肯定,正确的答案是不要。程序员应编写清晰易读的代码,编译器应优化。

答案 2 :(得分:3)

你在评论中提到:“比特转移怎么样?也许它可以改善更多?”

没有可用于除以100的按位运算,您可以使用位移仅除以2(2,4,8,16 ...)的幂。

Here's这是一篇很好的帖子。