3

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);
}
4

3 に答える 3

4

遅い数学演算でさえ他の演算と比較して比較的速いはずなので、問題の大部分を引き起こしているのは部門ではないのではないかと思います。

この間:

x * 0.01;

理論的にはより速いはずです

x / 100;

私はまだそれがあまり違いを生まないだろうと思います。ループで他に何をしていますか?

于 2012-07-11T21:52:47.040 に答える
3

ほぼ間違いなく、正しい答えはそうではありません。プログラマーは読みやすいコードを書く必要があり、コンパイラーは最適化する必要があります。

于 2012-07-11T21:51:56.250 に答える
3

あなたはコメントで尋ねました:「ビットシフトはどうですか?多分それはもっと改善することができますか?」

100で除算するために使用できるビット演算はありません。ビットシフトを使用して、2の累乗(2、4、8、16 ...)でのみ除算することができます。

これについての良い投稿があります。

于 2012-07-12T13:23:51.007 に答える