Good analysis:
http://klazuka.wordpress.com/2010/06/03/nslog-performance/
The sample code he gave to improve the performance of NSLog is as follows:
static NSDateFormatter *gFormatter; void KLog(NSString *format, ...) { va_list ap; va_start(ap, format); NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSDate *now = [[NSDate alloc] init]; OSSpinLockLock(&gFormatterLock); NSString *timestamp = [gFormatter stringFromDate:now]; OSSpinLockUnlock(&gFormatterLock); NSString *content = [[NSString alloc] initWithFormat:format arguments:ap]; const char *cc = [content cStringUsingEncoding:NSUTF8StringEncoding]; const char *fmt = [content characterAtIndex:[content length]-1] == '\n' ? "%s %s" : "%s %s\n"; fprintf(stderr, fmt, [timestamp cStringUsingEncoding:NSUTF8StringEncoding], cc); [now release]; [content release]; [pool release]; va_end(ap); }