summaryrefslogtreecommitdiff
path: root/src/backend/storage/buffer/buf_init.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-08-12 05:05:51 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-08-12 05:05:51 +0000
commit3ae7e4a33b595c4f157d29e4584175a054b5b520 (patch)
treea7d5a0c868902d31d5728f75e3078a4e63d028f3 /src/backend/storage/buffer/buf_init.c
parentb609695b7a5c1cf7c1234143eeb35809d00ff741 (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.c25
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;
- }
}
/*