0

这是一个非常直接的问题:在本地搜索 200-300 个字符串的数组需要多长时间?远程呢?

4

4 回答 4

2

如果您正在搜索字母字符串,并且搜索时间过长,您可以尝试将字符串列表转换为 DAWG(有向无环词图,易于 google)。我这样做了一个很长的列表(大约 170,000 字),并获得了 18,000 的改进率。

乔丹纳

于 2009-05-25T02:43:49.030 回答
1

搜索?凭什么?

如果您只是在运行:

[myStringArray containsObject:searchString];

然后可以在几微秒内搜索 200-300 个字符串。

如果您正在搜索:

BOOL found = NO
for (NSString *string in myStringArray)
{
    if ([string rangeOfString:searchString].location != NSNotFound)
    {
        found = YES;
         break;
    }
}

然后它几乎完全取决于每个字符串的长度,但对于少于几十个字符的字符串,它与之前的搜索速度大致相同。

远程搜索完全不同——但是对于这样的操作来说是一种巨大的时间浪费。它完全基于网络延迟。按平均 250 毫秒 ping 计算,远程操作的平均时间约为半秒或更长,因为生成网络数据包、通过网络发送、等待远程服务器接收、等待远程服务器需要很长时间服务器处理,等待响应并解析响应。

如果这个问题是一种迂回的提问方式:我是否应该只获取所有 30 个字符串并在本地搜索 - 那么:是的,在本地搜索。通常:本地搜索会更快,直到下载所有结果所需的时间成为负担(超过 3G,我通常认为快速透明下载的最大值约为 50kB)。

于 2009-05-25T00:11:00.867 回答
1

微秒。它非常快。当我发现这一点时,我也很惊讶:p

于 2009-06-04T12:44:54.813 回答
0

这是关于本地字符串搜索的。

我已经实现了 Trie 数据结构来索引字符串以实现快速自动完成。 http://en.wikipedia.org/wiki/Trie

于 2009-05-25T03:06:36.923 回答