isEqualToString的成本:与数字比较

时间:2011-02-12 22:20:33

标签: iphone objective-c core-data string-comparison

我正在开发一个项目,设计一个用于搜索和编目图像和文档的核心数据系统。我的数据模型中的一个对象是“关键字”对象。每次我添加一个新的关键词时,我首先想要首先运行所有现有关键字,以确保它在当前上下文中不存在。

我在这里的帖子和我的很多阅读中都读到,进行字符串比较比其他一些比较操作要昂贵得多。由于我很容易在新添加之前必须检查数千个单词,我想知道是否值得使用一些方法来代表关键字字符串数字用于此过程的目的。可能会将字符串中的每个字符分解为由每个字符的UTF代码组成的数字,然后将其存储在每个关键字的ID属性中。

我想知道是否有其他人认为这种方法可能带来任何好处,或者是否有其他人有更好的想法。

1 个答案:

答案 0 :(得分:1)

您可能有用的是一个合适的哈希函数,用于将文本字符串转换为(可能)唯一数字。 (您可能仍需检查碰撞效果。)

由于多种原因,比较C代码中的内在数字要快得多。它避免了Objective C运行时调度开销。它需要访问较少的总内存。每次比较的可执行代码通常只是一条指令或3,而不是带有增量器和多个决策点的循环。