Re: Key-Value Observing speed
Re: Key-Value Observing speed
- Subject: Re: Key-Value Observing speed
- From: Gwynne Raskind <email@hidden>
- Date: Fri, 12 Mar 2010 23:48:31 -0500
On Mar 12, 2010, at 10:22 PM, Michael Ash wrote:
>> You're right; the specific call that's causing the worst speed issues is returning a property typed with this structure:
>>
>> typedef struct { int32_t x, y; } IntegerPoint;
>>
>> It's not necessarily feasible to switch this to an NSPoint; it means digging up every point in the code that relies on signed 32-bit integer math and doing manual typecasting (or calling lround()) away from CGFloat. If there's no way to cheat KVO into doing this sanely, I'll resign myself to it, but I kinda hope there's something a little less annoying.
>>
>> (It's even more annoying because it *was* an NSPoint in a much earlier iteration of the code and I changed it because it simplified the code in two dozen places, and because the property in question is integer and doesn't need the slower floating-point instructions to manipulate it.)
> Implement +automaticallyNotifiesObserversForKey: to return NO for that
> key, then call will/didChangeValueForKey: yourself in the setter. That
> will avoid the expensive automatic KVO machinery, while allowing you
> to leave everything else untouched.
The key is already manually notified, but when I re-ran Instruments to double-check my results... Well, sigh. As people often seem to do with such things, I was misinterpreting what it was telling me. The CPU time's actually in -[NSView setNeedsDisplay:] for some reason. Sorry for the noise.
-- Gwynne
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden