Comments inline below > On Jan 17, 2018, at 1:46 PM, Itai Ferber <ifer...@apple.com> wrote: > > Hi Lance, > > I read Michael’s emails but I don’t remember at the moment — what is the new > string comparison implementation going to be based on? > The new approach uses the lexicographical ordering of NFC-normalized UTF-16 code units. For two known ASCII strings, we just use memcmp. > Also, how will this affect bridged strings? If I compare two NSStrings, I may > get a different result than if I compare the same two strings as bridged > through String, correct? > If I understand correctly, you’re asking what will happen if you have two strings explicitly typed as NSString in swift and you compare them. I believe they’ll still use whatever NSString does for comparison today, so CFStringCompare. For Swift strings backed by a bridged NSString, this new comparison method will be used.
It might make sense for explicit NSStrings in Swift to use the new method as well. What do you think? > — Itai > > On 17 Jan 2018, at 13:19, Lance Parker via swift-dev wrote: > > Hey Swift-Dev, > > The swift standard library team have been working on a new implementation > for comparing Swift strings for Swift 5. Michael touched on the motivations > in the State of String email but I’ll summarize here: > > The Swift String comparison implementations on Apple platforms and Linux > differ in results and performance. Apple platforms use CFStringCompare with > no locale, while Linux uses ICU libraries. Unifying the algorithms that Swift > strings use for comparison is reason alone for doing a new implementation. > We've come up with some great common fast paths that speed up comparisons for > a lot of common cases. Our microbenchmarks show up to a 6.8x increase in > performance and there is still some low hanging fruit in our implementation > that would bring further speedups. > > Bare in mind this is not intended to be a replacement for sorting strings > that will be presented to users, for that developers should stick to > NSLocalizedString APIs. > _______________________________________________ > swift-dev mailing list > swift-dev@swift.org > https://lists.swift.org/mailman/listinfo/swift-dev > <https://lists.swift.org/mailman/listinfo/swift-dev>
_______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev