1

引数が関数に出入りするたびに、ASボックスとボックス解除の値があると聞きました。

A.したがって、この方が速くなりますか?

var val = doWork(50,"hello", 2048);

function doWork (param1,param2,param3){
   t.text = param2;
   return param1+param3;
}

B.それともこれ?

var val:Number = doWork(50,"hello", 2048);

function doWork (param1:Number,param2:String,param3:Number):Number{
   t.text = param2;
   return param1+param3;
}
4

2 に答える 2

3

実行時に違いはありません。AS 2 は、静的型付けをサポートしない Actionscript Virtual Machine 1 (AVM1) によって実行されるため、型情報は、型の不一致を早期に発見するのに役立つコンパイラのヒントになります。しかし、型注釈の有無にかかわらず、同じコードは同じバイトコードを生成します。

AS 3 は、動的型付けと静的型付けの両方をサポートする AVM2 によって実行されるため、コード内で型を宣言すると、ランタイム ルックアップが不要になり、実行が高速になります。

于 2009-01-17T16:58:22.130 に答える
0

型を省略するよりも、パフォーマンス面で型を宣言する方が常に優れているため、その理由だけでBがより適切な答えになります。また、(含意によって)オブジェクトを使用しないことによっても優れています。

JBossのボックス化とアンボックス化の方法については(C#やJavaのようなものと比較して)それほど多くの情報はありませんが、AS3のドキュメントでは少し説明しています(データ型を参照)。

http://livedocs.adobe.com/flex/3/html/help.html?content=03_Language_and_Syntax_01.html

ただし、一般的には、ランタイムタイプのチェックを避け、ドキュメントで定義されているAS3の「プリミティブ」(ブール値、数値、整数、整数、文字列)を使用するのが最善です。幸運を!

于 2009-01-17T16:47:42.680 に答える