什么是更快的/应该用于短(ish)字符串:Split或Substring?

时间:2019-06-13 15:36:15

标签: swift optimization split substring

Swift 5,Xcode 10。

我正在遍历一个字符串数组(大小可能小于20),每个字符串看起来都像这样:

johnsmith.20190202102030.conf
janedoe.19700101115959.conf

我事先知道第一部分(名称),但想提取中间部分(生日:8、12或14个字符长)。

版本1:

let f = "johnsmith.20190202102030.conf"
let name = "johnsmith"

let start = f.index(f.startIndex, offsetBy: name.count+1)
let end = f.index(f.startIndex, offsetBy: f.count-5)

let birthday = String(f[start..<end])

版本2:

let f = "johnsmith.20190202102030.conf"
let farr = f.split(separator: ".").map(String.init)
let birthday = farr[1]

我目前仅对10个字符串执行此操作,并且(当然)没有注意到速度上的任何差异。即使有100个Strings,也可能不会有太大的区别,但是我很好奇:

忽略代码的长度和潜在的错误,是否有理由(个人喜好除外)偏爱使用一个版本而不是另一个版本(例如使用100k字符串的速度-我不要求实际测量!)? / p>

1 个答案:

答案 0 :(得分:1)

从我的粗略测试来看,子字符串版本似乎更快。但是,在您的情况下,我会选择使用by_y版本。该代码对我而言更具可读性。