> On May 21, 2015, at 4:44 PM, Graham Cox <graham....@bigpond.com> wrote: >> On 22 May 2015, at 3:02 am, Jens Alfke <j...@mooseyard.com> wrote: >> >>> Now that I have a path forward and understand why things are what they are, >>> this brings up the wonderful speed issue of "how much slower is property >>> access vs ivar access”. >> >> Yeah, I think we’ve had some vigorous debates about this topic in the past. > > > Anecdotally, with some coarse measurements to confirm it, I changed a bunch > of code in -initWithCoder: to set ivars directly instead of using the > property accessors (or -set<Foo>:). For a very large object graph - I’m > talking hundreds of thousands of objects - the speed-up was dramatic. > Dearchiving that large file went from 11 MINUTES to about 2 seconds. > > Because -initWithCoder: is an init method, setting ivars directly is par for > the course, and at that time there can’t be any KVO observations depending on > the property accessors, so it’s fine. However, if you have autosynthesized > all your properties, to be completely safe and future-proof, you probably > shouldn’t be doing this, even though right now the ivar names are > predictable. That means that performance could be an issue with > autosynthesized properties.
The synthesized ivar name algorithm is not an implementation detail. It is fully specified as follows: the compiler prepends a ‘_’ to the property name. Do not worry about future releases of the language changing the ivar name. John. _______________________________________________ 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