像下面的代码这样的东西超级慢:
var str:String = "" for (var i:Number = 0 ; i<1000000000000000000 ; ++i) { str += "someLongLongLongLongLongLongLongLongLongString"; }
有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('');