string - SWIFT:大写字符串的性能

标签 string performance swift nsstring

我有一个大文本文件 (25 MB)。我将其读入 NSString 变量中。我想使用“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:大写字符串的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31746668/

相关文章:

c++ - 如果 Qt 不是十六进制,则 Qt 从 QLineEdit 中删除字符

Javascript 性能改进

ios - UITabBar 屏幕顶部

ios - Firebase 通知仅显示在控制中心

performance - 在什么情况下大页面可以提高速度?

swift - 在另一个 ViewController Swift Xcode 中调用时 bool 值设置为 false

java - 编译还是不编译模式?

string - VBA Excel 数据验证

c - 将字符串引用传递给函数

c# - HTML遍历很慢