gpt4 book ai didi

swift - 逐行解析文本的最快方法

转载 作者:行者123 更新时间:2023-11-28 13:27:17 26 4
gpt4 key购买 nike

我正在尝试使用带有 String.contains(String) 方法的 if 语句逐行解析一个large TXT 文件(6mio.Lines,200MB)。目前很慢,有什么方法可以提高速度。

我知道还有 String.firstIndexOf,但它似乎更慢。正则表达式也可能更慢。

导入TXT和分割线:

   let content = try String(contentsOfFile:path, encoding: String.Encoding.ascii)
print("LOADED 0");
return content.components(separatedBy: "\n")

解析:

     if(line.contains("<TAG1>")) {
var thisline = line;
thisline = thisline.replacingOccurrences(of: "<TAG1>", with: "")
thisline = thisline.replacingOccurrences(of: "</TAG1>", with: "")
text = "\(text)\n\(thisline): ";
} else if(line.contains("<TAG2>")) {
var thisline = line;
thisline = thisline.replacingOccurrences(of: "<TAG2>", with: "")
thisline = thisline.replacingOccurrences(of: "</TAG2>", with: "")
text = "\(text) - \(thisline) ";
}

可能会有更多的 if 语句(这可能会进一步减慢解析速度)

如果能提高速度就太棒了,大约需要。在我的 Macbook 上 5-10 分钟(取决于文件大小)

编辑:似乎 string + "\n "+ string2 比 "(string)\n (string2)"快,但帮助不大

Edit2:我在应用程序中添加了一个进度条,它似乎开始很快,最后却变慢了?

最佳答案

建立你的最终text像你这样的变量会导致为每一行复制一个不断增长的字符串(添加少量内容),然后重新分配回 text .

// Slow
text = "\(text)\n\(thisline): "

将加法附加到原始变量会更快:

// Fast(er)
text.append("\n\(thisline): ")

根据所需的复杂程度(以及这只是一次性转换还是经常发生的事情?),您可能需要查看@rmaddy 关于使用适当解析器的建议。

关于swift - 逐行解析文本的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58139637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com