Brian Candler wrote: > On Thu, Oct 13, 2005 at 11:10:26AM -0700, Brooks Davis wrote: > >>>I don't think you can measure one single interger (or 64bit) increase in face >>>of a operation that has to access backing store. Even if there is a >>>performance hit, you don't have to build your kernel with the option enabled. >> >>The one thing I'd be worried about here is that 64bit updates are >>expensive on 32bit machines if you want them to be atomic. Relative to >>backing store they probably still don't matter, but the might be >>noticable. > > > I'd be grateful if you could clarify that point for me. Are you saying that > if I write > > long long foo; > ... > foo++; > > then the C compiler generates code for 'foo++' which is not thread-safe? > (And therefore I would have to protect it with a mutex or critical section) Yes. On 32-bit it looks something like that: cltd movl $1 %eax movl $0, %edx addl -16(%ebp), %eax adcl -12(%ebp), %edx movl %eax, -16(%ebp) movl %edx, -12(%ebp) > Or are you saying that the C compiler inserts its own code around foo++ to > turn it into a critical section, and therefore runs less efficiently than > you'd expect? C compilers not that smart yet, AFAIK :-)Received on Fri Oct 14 2005 - 07:34:45 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:45 UTC