1

コードにロギングメカニズムを実装しようとしています。AS2では、文字列の連結はコンパイル時に発生せず、実行時に発生することをいくつかのフォーラムで読んだことがあります。

次のコードのどれがより最適か知りたかった:

for (var i:Number = 0; i < n; i++ )
{
    var strToReplace:String = "{" + i + "}";
}

また、

for (var i:Number = 0; i < n; i++ )
{
    var strToReplace:String = "{%s}".split("%s").join(String(i));
}

AS2に関する限り、私は初心者なので、あなたの助けをいただければ幸いです。ありがとうございました。

4

1 に答える 1

0

テストする簡単な方法は次のとおりです。

var n:Number = 100000;

var beforeTime:Number = getTimer();

for (var i:Number = 0; i < n; i++ ) {
  var strToReplace:String = "{" + i + "}";
}

var betweenTime:Number = getTimer();
trace("between : " + (betweenTime - beforeTime));

for (var i:Number = 0; i < n; i++ ) {
  var strToReplace:String = "{%s}".split("%s").join(String(i));
}

var afterTime:Number = getTimer();
trace("after : " + (afterTime - betweenTime));

私がトレースで取得するもの:

  • 間:269
  • 後:866

最初の方法は3倍高速です。splitメソッドとjoinメソッドは、実行するために文字列内を検索する必要があります。

文字列が大きい場合、違いはさらに大きくなります。最初のメソッドの継続時間は変更されません...2番目のメソッドの期間はさらに時間がかかります。試してみてください。

于 2012-10-11T08:41:19.957 に答える