(no title)
austinz | 9 years ago
result.append(begin == eos ? "" : String(cs[begin..<end.successor()]))
with this: if begin == eos {
result.append("")
} else if let str = String(cs[begin..<end.successor()]) {
result.append(str)
}
runtime goes down from ~3 seconds to ~2.2 seconds.This is due to a rather insidious API design decision:
init?(_ view: String.UTF16View)
constructs a string out of a UTF16 view, but it can fail. If used in a context where its type is inferred to be non-nullable, the following generic reflection-related init is used instead: init<T>(_ instance: T)
I'm going to bring this up on the list and see if there are better ways of doing things.As far as I can tell most of the rest of the time is spent in the Swift native Unicode --> UTF16 decoding machinery, and NSCharacterSet.
fauigerzigerk|9 years ago
That's with Xcode 7.3.1 (7D1014)
austinz|9 years ago