> On 8 Oct 2016, at 11:22, Quincey Morris <quinceymor...@rivergatesoftware.com> 
> wrote:
> 
> On Oct 7, 2016, at 21:06 , Gerriet M. Denkmann <g...@mdenkmann.de> wrote:
>> 
>> But, alas, it is also much slower: overhead almost 40 sec (whereas my 
>> admittedly rather hackish way took less then half a second).
> 
> That may indicate a lot of contention — e.g. you were running multiple copies 
> of that loop in different threads, and each loop was doing an increment every 
> iteration. I’d actually try doing it this way:
> 
>>      //      One-time initialization, globally
>> 
>>      dsema = dispatch_semaphore_create (1);
>> 
>>      NSUInteger counter = 0;
>>      
>> 
>>      //      Per-thread code, locally
>> 
>>      NSUInteger perThreadCounter = 0;
>> 
>>      for …
>>      {
>>              …
>>              perThreadCounter++;
>>      }
>> 
>>      dispatch_semaphore_wait (dsema, <forever>);
>>      counter += perThreadCounter;
>>      dispatch_semaphore_signal (dsema);
> 
> That should diminish the overhead to, effectively, zero.

Well, it diminishes the overhead from about 40 sec to less than 60 msec - a 
huge improvement indeed.
But, using the same perThreadCounter, atomic_fetch_add_explicit has an overhead 
of less than 2 msec.

I really should have thought of an perThreadCounter myself - it is obviously so 
much better.
Thanks for pointing me in the right direction!

Kind regards,

Gerriet.


_______________________________________________

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

Reply via email to