I have a Obj-C method that is highly recursive, and needs to run at maximum 
performance. With this in mind, I am locally caching the method's own IMP to 
avoid the message dispatch for the recursive calls. It seems to work and gives 
a measurable benefit, but I need to be absolutely certain it's right before 
committing it to a release. Can anyone comment on whether it actually is right? 
Have I missed anything? Anything even faster?


#define qUseImpCaching          1


- (void)  recursivelySearchWithRect:(NSRect) rect index:(NSUInteger) indx
{
#if qUseImpCaching      
        static void(*sfunc)( id, SEL, NSRect, NSUInteger ) = nil;
        
        if ( sfunc == nil )
                sfunc = (void(*)( id, SEL, NSRect, NSUInteger ))[[self class] 
instanceMethodForSelector:_cmd];
#endif

// other code omitted
// recurse:

        #if qUseImpCaching      
                sfunc( self, _cmd, rect, subnode );
        #else
                [self recursivelySearchWithRect:rect index:subnode];
        #endif
}


--Graham_______________________________________________

Cocoa-dev mailing list ([email protected])

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to