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 方法必须在你的字符串中搜索才能执行。

如果您的字符串更大,则差异更大:第一个方法持续时间不会改变......第二个需要更多时间。你应该试试。

于 2012-10-11T08:41:19.957 回答