質問

誰かがそれらの正確な速度テストの1つを知っているか、持っているのか、ActionScript 3の速度以上の「ゼロ」以上の「「対」以上の」をテストできるのではないかと思っていました(それが違いを生む場合はAir 2.5)?

このコンピューターで実行されている仮想マシンがあり、非常に不正確な結果が得られています。

そのようにそれを使用します

if ( !(__index < _vector.length) ) return;

また

if ( __index >= _vector.length ) return;

最初のものは1つのテストであり、それを逆にすることだと思っていたでしょうが、ActionScript 3には、あなたが決して確信できない癖がいくつかあります。

役に立ちましたか?

解決

理論的には、速度に違いはないはずです。 ActionScriptはNanojit JITライブラリを使用してコードをコンパイルします。私は事実を知っています(AdobeのActionScriptとNanojitを共有するMozillaのJavaScriptエンジンでそのコードに取り組んだことがあります)逆の比較に。したがって、理論的には、唯一の違いは、コードをコンパイルするために別のサイクルまたは2つの費用を費やすことです。これは心配する価値がありません。

一方、現代のCPUは複雑な獣であり、無限の摂動は顕著な違いを生む可能性があります。ですから、私は2つの間に違いがないことに強いオッズを置いていましたが、私はその農場に賭けませんでした。

他のヒント

あなたの質問は、ほとんどの言語が可能な限り最も最適なマシンコードにコンパイルしようとするため、アクションスクリプトよりもコンピューターサイエンスに関係しています。

そのため、C ++の例を使用して質問に答えます。

int j = 16;
if (!(j < 10))
{
    int l = 3;
}

if (j >= 10)
{
    int l = 3;
}

これにより、アセンブリで次の重要なセクションが生成されます。

00231375  cmp         dword ptr [j],0Ah  
00231379  jl          wmain+32h (231382h)  
0023137B  mov         dword ptr [l],3  
00231382  cmp         dword ptr [j],0Ah  
00231386  jl          wmain+3Fh (23138Fh)  
00231388  mov         dword ptr [l],3  
0023138F  xor         eax,eax  

行00231375および00231382は、IFステートメントに含まれる実際のテストです。ご覧のとおり、私の<と> =テストの両方が、アセンブリで同じコードとしてコンパイルされました(2つの整数を比較する場合)。したがって、どちらのテストもCPUで同じ時間がかかります。どちらも同じテストになるためです(右<右に、ブロックの場合はスキップ)。これは、アクションスクリプトコンパイラに当てはまる可能性が高いです。

ただし、1つの質問は、JITコンパイラがコンパイルに時間がかかるかどうかです!([int] <[int])または[int]> = [int]。私の推測では、違いはおそらく重要ではないということです。

ループを作成し、GetTimer()を使用して発見します。このようなことを試してみてください:

var startTime:int = getTimer()
var count:int = 1000000
for (var i:int = 0;i<count;i++) {

    if ( !(__index < _vector.length) ){

    }
}
trace("The first script took "+String(getTimer()-startTime) + "ms to run")



startTime = getTimer()
for (i = 0;i<count;i++) {

    if ( __index <= _vector.length ){

    }
}
trace("The second script took "+String(getTimer()-startTime) + "ms to run")

また、このtecniqueで不正確な結果が得られる場合は、カウント変数を大きくしてみてください。 「_vector.lenght」の削除ループからの検証は、「>」と「> =」パフォーマンスを確認する必要がある場合に役立つ場合があります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top