我有一个大文件(25 MB)。我将其读入NSString var。我想使用“ uppercaseString”将每个字符转换为大写。但是功能是如此之慢,需要几分钟。
有什么提示可以使其工作更快吗?

添加的代码:

if let path = NSBundle.mainBundle().pathForResource("GERMANU", ofType: "txt") {
    var error: NSError?
    if let data = NSData(contentsOfFile: path, options: NSDataReadingOptions(), error: &error) {
        if let datastring = NSString(data: data, encoding: NSMacOSRomanStringEncoding) {
            var upper = datastring.uppercaseString
 ...


那是有效的代码,但是很慢。始终只有最后一行需要。

最佳答案

String::uppercaseString是瞬时的;创建字符串不是。

 # Long time
 12> var st : String = "".join(Array(count:25000000, repeatedValue: "a"))
st: String = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..."

 # Short time
 13> st.uppercaseString
$R8: String = "AAAAAAAAAAAAAAAAAAAAAAAAAAAA..."


假设您使用的是Roman编码,则转换为大写字母可能很重要。也许您可以尝试其他编码(如果合适的话)?您可以尝试使用init?(... usedEncoding ...)变体并在结果上调用fastestEncoding进行探索。

注意:您可以使用以下特殊方法直接从具有特定编码的文件中创建Swift字符串:

if let datastring = String(contentsOfFile: path, encoding: ... , error: &error) {
  var upper = datastring.uppercaseString
}

关于string - SWIFT:uppercaseString的性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31746668/

10-10 09:02