Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit417fefa

Browse files
committed
Faster PageIsVerified() for the all zeroes case.
That's primarily useful for testing very large relations, using sparsefiles.Discussion: <20140331101001.GE13135@alap3.anarazel.de>Reviewed-By: Peter Geoghegan
1 parent769fd9d commit417fefa

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

‎src/backend/storage/page/bufpage.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ bool
8181
PageIsVerified(Pagepage,BlockNumberblkno)
8282
{
8383
PageHeaderp= (PageHeader)page;
84-
char*pagebytes;
84+
size_t*pagebytes;
8585
inti;
8686
boolchecksum_failure= false;
8787
boolheader_sane= false;
@@ -118,10 +118,17 @@ PageIsVerified(Page page, BlockNumber blkno)
118118
return true;
119119
}
120120

121-
/* Check all-zeroes case */
121+
/*
122+
* Check all-zeroes case. Luckily BLCKSZ is guaranteed to always be a
123+
* multiple of size_t - and it's much faster to compare memory using the
124+
* native word size.
125+
*/
126+
StaticAssertStmt(BLCKSZ== (BLCKSZ /sizeof(size_t))*sizeof(size_t),
127+
"BLCKSZ has to be a multiple of sizeof(size_t)");
128+
122129
all_zeroes= true;
123-
pagebytes= (char*)page;
124-
for (i=0;i<BLCKSZ;i++)
130+
pagebytes= (size_t*)page;
131+
for (i=0;i<(BLCKSZ /sizeof(size_t));i++)
125132
{
126133
if (pagebytes[i]!=0)
127134
{

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp