3

我有一段代码运行到一个循环中,除以 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);
}
4

3 回答 3

4

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

虽然这样:

x * 0.01;

理论上应该比

x / 100;

我仍然怀疑它不会有太大的不同。你还在循环中做什么?

于 2012-07-11T21:52:47.040 回答
3

你在评论中问:“位移怎么样?也许它可以改进更多?”

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

这是一个很好的帖子。

于 2012-07-12T13:23:51.007 回答
3

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

于 2012-07-11T21:51:56.250 回答