iphone - NSString к int через хэш?для производительности CoreData - PullRequest
1 голос
/ 28 июня 2011

Может кто-нибудь сказать мне способ хэширования строки NSS к целому числу, и этот хэш должен всегда быть идентичным соединению с строкой NSS.Для строки NSSt значение хеша int не должно меняться ни при каких условиях.

Я думал использовать [хэш NSString], но этот пост ( Каждый раз вычисляется ли [хэш NSString]? ) сказал, что [хэш NSString] изменится, что означает, что одна идентичная строка NSString может иметь другое значение хэша.

Это не то, что я хочу.

Ниже поясняется, для чего мне нужна такая хеш-функция NSString to Integer.

Я использую CoreData для хранения всех своих данных.Каждый раз, когда я выбираю, я выбираю все элементы, чей "CategoryUrl" соответствует определенному.«CategoryUrl» довольно длинный, как обычный длинный http-URL, но с дополнительными символами внутри, чтобы показать больше метаинформации.

В любом случае, для каждой такой выборки она довольно медленная, потому что я думаю, что CoreData придется сравнивать свойство "CategoryUrl" каждого элемента с тем, которое нужно найти.И сравнение NSString в CoreData идет медленно, медленнее, чем Integer, верно?

Я думаю о том, чтобы хешировать «CategoryUrl» для каждого элемента перед его сохранением, и сохранить значение хеш-функции в новом свойстве для каждого элемента.Поэтому для каждой выборки я просто позволяю CoreData сравнивать хеш-значение «CategoryUrl» вместо значения NSString.Это может повысить скорость.

Я провел несколько экспериментов с фальшивым хеш-значением, оно значительно повысило.Но я все еще не уверен, потому что я еще не нашел приличной реальной хэш-функции NSString to Integer.

Кто-нибудь может сказать мне, думаю ли я в правильном направлении для производительности CoreData и что является лучшимспособ хеширования NSString в целое число?

Спасибо

1 Ответ

0 голосов
/ 28 июня 2011

Есть документированные проблемы со встроенным методом хэширования NSString, поэтому, если вы не хотите полагаться на него, вы можете вместо этого использовать хэш MD5 .Вместо рассылки спама я просто свяжу вас с предыдущим вопросом с некоторыми отличными ответами.Обратите внимание, что при сохранении данных вы получите небольшой выигрыш в производительности, но чтение должно значительно ускориться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...