2013-05-04 92 views
0

字符串比較可能是昂貴的。有一些統計數據表明,通過首先比較字符串大小,可以消除很高比例的字符串比較。所以我很想知道NSString compare:方法是否考慮到了這一點。有人知道嗎?NSString比較效率

回答

2

根據消息來源here(這只是一個實現,其他可能會有所不同),compare不首先檢查長度,這實際上是有道理的,因爲它不是一個相等性檢查。由於它返回一個小於/等於/大於返回碼,它檢查字符,即使長度是相同的。

如果長度不同,純粹的isEqual類型的方法可能能夠快速進行字符檢查,但compare沒有那種奢侈品。

它確實對零長度進行檢查,但不能比較兩個長度之間的對比。

+0

這些來源不是OSX中使用的來源,但您的觀點仍然不錯 – 2013-05-04 07:02:44

+0

@paxdiablo有趣的資源。值得注意的是,isEqualToString:確實首先進行檢查。 – stephen 2013-05-04 07:08:57

1

是的。它還檢查之前的指針是否相等(它涵蓋了常量字符串大小寫以及其他字符串解析和字符串ROM)。

(編輯)此答案適用於-isEqualToString :,不是--compare :.我誤讀

+0

是否有任何文件支持此聲明? – stephen 2013-05-04 06:50:27

+0

@stephen在opensource.apple.com檢查'CFStringRef'源代碼。當一個'NSString'是一個類集羣時,你可能會最終調用這個實現。 – JustSid 2013-05-04 06:52:34

+0

還有CFString源,它是OSS。這並不包括所有的NSString實現;你需要爲那些反彙編基金會(霍珀是一個很好的工具)。 – 2013-05-04 06:53:11