我可以帮您进行翻译。以下是需要翻译的内容:
有没有办法加快Swift版本的速度,或者说Swift字典仍然比Python慢得多?
我有一些Python代码,用于构建一个包含大约250K个字符串(单词)作为键的字典,每个值都有一个字符串数组。Python版本在0.5秒内运行。我需要将其移植到Swift,但我的Swift移植版运行时间为10.1秒,比Python慢了20倍。
以下是Python代码:
wordsDictionary = defaultdict(list)
for word in words:
wordsDictionary[sort_string(word)].append(word)
以下是 Swift 代码:
var wordsDictionary : Dictionary<String, [String]> = Dictionary()
for word in words {
let sortedWord : String = String(word.characters.sort())
if wordsDictionary[sortedWord] == nil {
wordsDictionary[sortedWord] = []
}
wordsDictionary[sortedWord]?.append(word)
}
有没有办法加快Swift版本的速度,或者说Swift字典仍然比Python慢得多?
sort_string
函数对UTF-8字节数组进行超级愚蠢的排序,而Swift中的word.characters
将字符串分解为图形群,并且.sort()
为每个图形群创建了许多小对象的新集合,这有效地降低了性能,与Python相比。我怀疑你可能严重误解了"字符"的含义- Swift 正确但速度慢,而 Python 非常不正确但快速。因为在英语/ ASCII 中没有区别,所以你很难理解为什么会出现问题。 - hamstergene