RE: Reference counting in UnicodeString

"Brown, Brooks" <[email protected]> Mon, 13 Dec 2004 10:57:08 -0800
Newsgroups gmane.comp.lib.icu.general
Message-ID <[email protected]>
Thanks for the information.  What platform are the pthreads statistics from?

-----Original Message-----
From: Robert Buck [mailto:[email protected]]
Sent: Monday, December 13, 2004 5:33 AM
To: Deborah Goldsmith; Brown, Brooks
Cc: [email protected]
Subject: RE: Reference counting in UnicodeString


Here are some perf stats (cycle counts per operation) for common synch operations. First column is pthreads, second column is Windows.

Windows atomic inc/dec/add/cas style APIs take on the order of 12-25 cycles to complete. The inc/dec/ APIs are closer to 12 cycles, but can spike up to 25; the cas style APIs are closer to 25 cycles, may spike a little higher.

acquire a lock (uncontested)
  mutex                               84    822 
  critical_section                    N/A    20 
release a lock
  mutex                               81    758 
  critical_section                    N/A    17 

acquire/decrement semaphore           143   824 
release/increment semaphore           144   767 

allocate a key for thread-local storage
  1st key                             255   260 
delete a key for thread-local storage
  last key                            250   968 
set thread-local storage              102    52 
retrieve thread-local storage         131    51 
 
For many applications, in the big picture, 84 cycles is in the noise.


>-----Original Message-----
>From: [email protected] 
>[mailto:[email protected]] On Behalf Of 
>Deborah Goldsmith
>Sent: Friday, December 10, 2004 5:12 PM
>To: Brown, Brooks
>Cc: [email protected]
>Subject: Re: Reference counting in UnicodeString
>
>pthread_mutex_lock isn't that bad. It's used quite a bit in Mac OS X. 
>If there's no contention I think it's pretty fast.
>
>In addition, I'm looking into adding support for non-blocking 
>reference counting when building and running ICU on Darwin 
>(which includes Mac OS X). This would only be active on Mac OS 
>X 10.4 or later (Darwin 8.0 or later), however; on earlier 
>releases you'd get pthread_mutex_lock.
>
>Deborah Goldsmith
>Internationalization, Unicode liaison
>Apple Computer, Inc.
>[email protected]
>
>On Dec 10, 2004, at 12:35 PM, Brown, Brooks wrote:
>
>> We are considering using ICU's UnicodeString as a cross platform 
>> string class.  (The platforms we need to support are MacOS 
>10.2.8 and 
>> Windows 2000 or better.)  The UnicodeString class has many 
>features we 
>> want, but I am concerned about the use of pthread_mutex_lock on 
>> non-Windows platforms for safe reference counting.
>>
>> Is the optimization of sharing buffers for string data really worth 
>> all the thread synchronization that can occur?  Normally, when you 
>> copy a string, you modify it in the next statement, so you need to 
>> allocate a new buffer and copy anyway.
>>
>> Should there be a compiler option to disable the behind-the-scenes 
>> sharing of buffers between strings?  (Excluding read only aliases, 
>> since those aren't reference counted.)
>>
>> Brooks R. Brown
>> Software Engineer
>> Extensis, Inc.
>> <http://www.extensis.com/>
>> phone: 503.274.2020 x130
>> email: [email protected]
>>
>> Empowering digital assets
>>
>> Notice:  This communication may contain privileged or other 
>> confidential information.  If you are not the intended recipient, or 
>> believe that you have received this communication in error, 
>please do 
>> not print, copy, retransmit, disseminate, or otherwise use the 
>> information.  Also, please indicate to the sender that you have 
>> received this email in error, and delete the copy you 
>received.  Thank 
>> you.
>>
>
>_______________________________________________
>icu mailing list
>[email protected]
>http://oss.software.ibm.com/developerworks/oss/mailman/listinfo/icu
>