diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-08-12 05:05:51 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-08-12 05:05:51 +0000 |
commit | 3ae7e4a33b595c4f157d29e4584175a054b5b520 (patch) | |
tree | a7d5a0c868902d31d5728f75e3078a4e63d028f3 /src/backend/storage/buffer/buf_init.c | |
parent | b609695b7a5c1cf7c1234143eeb35809d00ff741 (diff) |
Remove BufferBlockPointers array in favor of a base + (bufnum) * BLCKSZ
computation. On modern machines this is as fast if not faster, and we
don't have to clog the CPU's L2 cache with a tens-of-KB pointer array.
If we ever decide to adopt a more dynamic allocation method for shared
buffers, we'll probably have to revert this patch, but in the meantime
we might as well save a few bytes and nanoseconds. Per Qingqing Zhou.
Diffstat (limited to 'src/backend/storage/buffer/buf_init.c')
-rw-r--r-- | src/backend/storage/buffer/buf_init.c | 25 |
1 files changed, 2 insertions, 23 deletions
diff --git a/src/backend/storage/buffer/buf_init.c b/src/backend/storage/buffer/buf_init.c index 52e6ae02223..5051e762d85 100644 --- a/src/backend/storage/buffer/buf_init.c +++ b/src/backend/storage/buffer/buf_init.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/buffer/buf_init.c,v 1.74 2005/08/08 03:11:44 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/buffer/buf_init.c,v 1.75 2005/08/12 05:05:50 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -19,11 +19,9 @@ BufferDesc *BufferDescriptors; -Block *BufferBlockPointers; +char *BufferBlocks; int32 *PrivateRefCount; -static char *BufferBlocks; - /* statistics counters */ long int ReadBufferCount; long int ReadLocalBufferCount; @@ -154,30 +152,11 @@ InitBufferPool(void) void InitBufferPoolAccess(void) { - char *block; - int i; - /* * Allocate and zero local arrays of per-buffer info. */ - BufferBlockPointers = (Block *) calloc(NBuffers, - sizeof(*BufferBlockPointers)); PrivateRefCount = (int32 *) calloc(NBuffers, sizeof(*PrivateRefCount)); - - /* - * Construct addresses for the individual buffer data blocks. We do - * this just to speed up the BufferGetBlock() macro. (Since the - * addresses should be the same in every backend, we could inherit - * this data from the postmaster --- but in the EXEC_BACKEND case - * that doesn't work.) - */ - block = BufferBlocks; - for (i = 0; i < NBuffers; i++) - { - BufferBlockPointers[i] = (Block) block; - block += BLCKSZ; - } } /* |