去落格博客阅读完整排版的在字符串中 快速查找很多时候,我们需要在字符串中执行查找,以判断过滤指定的内容出来。比如过在落格输入法当中,就需要用辅码过滤出需要的候选词。一般来说,查找和对比肯定是数字来的最快,不过在词库上总不能把所有的词汇都转换为数字(虽然理论上可行……)在字符串的搜索上,我们有很多种办法来实现,这里我就说一下我自己的思路:Set<String>由于我的词库辅码筛选只对两字或者三字词汇生效,那么我考虑把它们作为集合(Set)来检测,把词汇拆成单字。很遗憾,不说拆分的单独开销,本以为哈希表的set集合会很快,但速度并不行,可能它的优势是在于大量的时候吧,不过很可惜,它的速度是最慢的。我用一个简短的集合来多次遍历然后统计时间,得到结果如下:let ptime = Date().timeIntervalSince1970
let b:Set<String> = ["a","b","c","d","e","f","g","h"]
for _ in (0...9999999) {
_=b.contains("hb")
}
let during = Date().timeIntervalSince1970 - ptime
print(during)结果8.90186786651611值得一提的是,无论是命中还是丢失,速度是一样的。当然,速度慢也得考虑
...
继续阅读
(58)