Cool! Thanks for that. My tests were run on an 27" iMac 3.4 GHz Intel Core i7. Code was compiled with -O3 (Fastest).
The PerfTimer I used is my own. I blogged about it here: http://www.objective-brian.com/334 Feedback is welcome. Brian On Thu, Mar 8, 2012 at 1:20 PM, Charles Srstka <cocoa...@charlessoft.com>wrote: > On Mar 8, 2012, at 2:51 PM, Brian Lambert wrote: > > > I should have said, "relatively". As in, good enough for many scenarios > where it will be used infrequently and keeping the code simple makes sense. > > > > Of course, you're right, Charles. > > > > 1,000,000 integer increments synchronized by @synchronized, OSSpinLock, > and NSLock: > > PerfTimer[95716:403] 1,000,000 @synchronized ++value: [118 ms] > [117,813,038 ns] > > PerfTimer[95716:403] 1,000,000 OSSpinLock ++value: [8 ms] [8,444,567 ns] > > PerfTimer[95716:403] 1,000,000 NSLock ++value: [63 ms] [63,049,168 ns] > > > > A million operations in ~100 ms is fast. A million operations in ~10 ms > is WICKED fast. > > > > Brian > > Another interesting option is mentioned in Appleās GCD man pages; > dispatch_sync can actually be used as a locking mechanism, like so: > > __block NSUInteger value = 0; > > dispatch_sync(myLockQueue, ^{ > value++; > }); > > This results in something almost as simple as @synchronized, and quite a > lot faster. Here are the results I get when running it on my MBP. All my > results do take about twice as long as yours; I suspect you have a rather > nice machine. :-) > > 2012-03-08 15:14:56.408 Lock Benchmarks[57369:403] @synchronized value++: > 259.156942 ms > 2012-03-08 15:14:56.429 Lock Benchmarks[57369:403] OSSpinLock value++: > 19.486010 ms > 2012-03-08 15:14:56.517 Lock Benchmarks[57369:403] pthread_mutex_t > value++: 86.329997 ms > 2012-03-08 15:14:56.645 Lock Benchmarks[57369:403] NSLock value++: > 127.897978 ms > 2012-03-08 15:14:56.692 Lock Benchmarks[57369:403] dispatch_sync value++: > 45.979023 ms > > Not bad; OSSpinLock is the only thing that seems to be able to best it. > > Charles > > _______________________________________________ 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