像下面的代码这样的东西 super 慢:

var str:String = ""
for (var i:Number = 0 ; i<1000000000000000000 ; ++i) {
    str += "someLongLongLongLongLongLongLongLongLongString";
}

Java 中有 StringBuilder 但似乎没有 AS 的等价物。
那么,你们如何处理大字符串连接?

更新:

谢谢大家的回答!

我刚刚编写了自己的 testing program 。使用 += 已经是最快的了……慢的是把它放在 TextArea 上……

我已经投票支持你们中的大多数人,因为这些建议是有道理的 :) 尽管我的测试结果表明我的问题似乎有些问题,因为我要求的东西比已经最好的东西更好:P

最佳答案

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
performancetests.Strings (1 iterations)
Player version: MAC 10,0,32,18 (debug)
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
method...................................................ttl ms...avg ms
stringsWithConcatMethod                                   17555 17555.00
stringsWithPlusConcat                                      4972  4972.00
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

我不是受虐狂,所以我只是使用了 10000000 次迭代循环:
var str:String = ""
for (var i:Number = 0 ; i<10000000 ; ++i) {
    str += "someLongLongLongLongLongLongLongLongLongString";
}

相对:
var str:String = ""
for (var i:Number = 0 ; i<10000000 ; ++i) {
    str = str.concat("someLongLongLongLongLongLongLongLongLongString");
}

使用 Grant Skinner's AS3 Performance Test Harness 。 String::concat 方法甚至更慢,但考虑到您的条件 as3 可能只是 sloooow。 (结果中的 1 次迭代是经过 10000000 次迭代循环的 1 次)。我对结果感到相当惊讶。我认为 concat 会更快。

关于flash - 当输入很大时,字符串连接非常慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1536260/

10-10 23:06