And*_* Li 3 string flash concatenation actionscript-3
像下面的代码这样的东西超级慢:
var str:String = ""
for (var i:Number = 0 ; i<1000000000000000000 ; ++i) {
str += "someLongLongLongLongLongLongLongLongLongString";
}
Run Code Online (Sandbox Code Playgroud)
有StringBuilder在Java中,但似乎也没有类似AS.那么,你们如何处理大字符串串联?
更新:
谢谢大家的回答!
我刚刚编写了自己的测试程序.使用+=已经是最快的...什么是缓慢的是把它放在TextArea上...
我已经投票给大多数人,因为建议有意义:)尽管我的测试结果表明我的问题似乎有点问题,因为我要求更好的东西,那么已经是最好的:P
是的,这会很慢,即使有一个StringBuilder.我的问题是:你为什么要创建一个大小为46艾字节的字符串?
在某些时候,更传统的外部存储(即磁盘上)方法成为一个好主意,但你似乎已经通过了这一点(基于今天常用的磁盘阵列).
我一般都没有这个问题,因为我倾向于不使用字符串来存储这么大的东西.字符串通常用于较小的对象.你有什么是一个相当大的数据仓库,而不是名称或地址字段:-)
我不能说我对ActionScript有经验,但对于ECMAScript,我发现数组可以帮助加速字符串连接(下面是JavaScript示例):
var sb = [];
for (var i = 0; i < 10000000000; i++) {
sb.push('longlonglong');
// In this particular case you can avoid a method call by doing:
//sb[i] = 'longlonglong';
}
var str = sb.join('');
Run Code Online (Sandbox Code Playgroud)