On Apr 3, 2015, at 13:18 , Charles Jenkins <cejw...@gmail.com> wrote:
> 
> is there a way in the playground for use to test addresses to make sure 
> attrStr.string as NSString doesn’t perform a copy? 

I doubt it. This is the best I could come up with in a couple of minutes:

> import Cocoa
> 
> let notWhitespace = 
> NSCharacterSet.whitespaceAndNewlineCharacterSet().invertedSet
> let count = 500000
> 
> let aString: String = String (count: count, repeatedValue: Character ("A"))
> let aNSString: NSString = ("" as NSString).stringByPaddingToLength (count, 
> withString: "A", startingAtIndex: 0)
> 
> let date1 = NSDate ()
> let bString: String = aNSString as String
> let date2 = NSDate ()
> let time2 = date2.timeIntervalSinceDate(date1)
> 
> let date3 = NSDate ()
> let bNSString: NSString = aString as NSString
> let date4 = NSDate ()
> let time4 = date4.timeIntervalSinceDate(date3)
> 
> let attrStr = NSAttributedString (string: aNSString)
> 
> let date5 = NSDate ()
> let range5 = attrStr.string.rangeOfCharacterFromSet(notWhitespace, options: 
> NSStringCompareOptions.allZeros)
> let date6 = NSDate ()
> let time6 = date6.timeIntervalSinceDate(date5)
> 
> let date7 = NSDate ()
> let range7 = (attrStr.string as 
> NSString).rangeOfCharacterFromSet(notWhitespace, options: 
> NSStringCompareOptions.allZeros)
> let date8 = NSDate ()
> let time8 = date8.timeIntervalSinceDate(date7)

Playground results:

time2: 0.3328
time4: 0.1817
time6: 0.0022
time8: 0.0017

Since the “rangeOfCharacter” scans terminate at the first character, this 
suggests that there’s no real conversion in the last case, which is the one 
you’re interested in. (Also, time6 and time8 don’t vary with the value of 
‘count’.) However, generalizing from this seems treacherous. And I may have 
just Done It Wrong™.



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to