Сравнение строк может быть дорогостоящим. Существует некоторая статистика, плавающая вокруг, которая говорит, что очень высокий процент сравнения строк можно устранить, сначала сравнив размеры строк. Поэтому мне любопытно узнать, учитывает ли это метод сравнения NSString:. Кто-нибудь знает?Эффективность сравнения NSString
ответ
Согласно источникам here (это только одна реализация, другие могут действовать по-другому), compare
не проверяет длину сначала, что на самом деле имеет смысл, поскольку это не проверка равенства. Поскольку он возвращает код возврата менее или равный/больше, чем код возврата, то имеет, чтобы проверить символы, даже если длины одинаковы.
Метод чистого isEqual
-type может иметь возможность сочетать символы, если длины отличаются друг от друга, но compare
не имеет такой роскоши.
Он выполняет определенные проверки длины против нуля, но не сравнивает две длины друг с другом.
Да, так оно и есть. Он также проверяет равенство указателя перед этим (которое охватывает случай строковой строки и некоторые другие из-за строкового uniquing и строкового ПЗУ).
(изменить) Этот ответ применяется к -isEqualToString :, not -compare :. I неверно прочитано
Есть ли какая-либо документация для подтверждения этой претензии? – stephen
@stephen Проверьте источник CFStringRef на сайте opensource.apple.com. Хотя «NSString» является кластером классов, скорее всего, вы собираетесь использовать эту реализацию. – JustSid
Существует источник CFString, который является OSS. Однако это не распространяется на все реализации NSString; вам нужно будет разобрать Foundation для них (Hopper - хороший инструмент для этого). –
- 1. Эффективность сравнения C++ int
- 2. Эффективность сравнения двух словарей
- 3. NSString сравнения в NSTimer «петля»
- 4. Эффективность сравнения строк и чисел в MongoDB
- 5. Null/Объект и/Null эффективность сравнения Null
- 6. Относительная эффективность целочисленного сравнения в java?
- 7. Функция сравнения наборов; помочь повысить эффективность
- 8. Ошибка сравнения строк в столбцах с NSString
- 9. Странная строка C и проблема сравнения NSString
- 10. Дизайн интерфейса и эффективность сравнения двух списков <string>
- 11. Эффективность слушателей Эффективность
- 12. Эффективность и эффективность алгоритмов
- 13. Преобразование NSString в NSDate для сравнения, какой из них новее?
- 14. Как представить nsstring в общей форме для поиска или сравнения?
- 15. NSString встроенный метод для сравнения числа аналогичных символов
- 16. Преобразование значения NSDictionary (id?) В NSString или NSNumber для сравнения
- 17. Какой метод NSString нужно вернуть найденное значение сравнения?
- 18. Улучшает ли эффективность схемы эффективность схемы?
- 19. Переменная NSString не NSstring
- 20. Эффективность цикла inested for()
- 21. VS2010 Исходные данные сравнения сравнения сравнения сравнения профилей сравнения
- 22. Вложенная эффективность NSScanner
- 23. NSString сравнение специальных символов
- 24. петли эффективность
- 25. Эффективность программы
- 26. ServiceHost Эффективность
- 27. UIView эффективность
- 28. Casttype эффективность
- 29. Эффективность ArrayList
- 30. Условная эффективность
Эти источники не те, что используются в OSX, но ваша точка по-прежнему хорошая –
@paxdiablo Интересный ресурс. Также стоит отметить, что isEqualToString: делает эту проверку в первую очередь. – stephen