mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-27 08:39:28 +08:00
Reorder FmgrBuiltin members, saving 25% in size.
That's worth it, as fmgr_builtins is frequently accessed, and as
fmgr_builtins is one of the biggest constant variables in a backend.
On most 64bit systems this will change the size of the struct from
32byte to 24bytes. While that could make indexing into the array
marginally more expensive, the higher cache hit ratio is worth more,
especially because these days fmgr_builtins isn't searched with a
binary search anymore (c.f. 212e6f34d5
).
Discussion: https://postgr.es/m/20181016201145.aa2dfeq54rhqzron@alap3.anarazel.de
This commit is contained in:
parent
68fc227dd0
commit
28d750c0cd
@ -230,7 +230,7 @@ my $fmgr_count = 0;
|
||||
foreach my $s (sort { $a->{oid} <=> $b->{oid} } @fmgr)
|
||||
{
|
||||
print $tfh
|
||||
" { $s->{oid}, \"$s->{prosrc}\", $s->{nargs}, $bmap{$s->{strict}}, $bmap{$s->{retset}}, $s->{prosrc} }";
|
||||
" { $s->{oid}, $s->{nargs}, $bmap{$s->{strict}}, $bmap{$s->{retset}}, \"$s->{prosrc}\", $s->{prosrc} }";
|
||||
|
||||
$fmgr_builtin_oid_index[ $s->{oid} ] = $fmgr_count++;
|
||||
|
||||
|
@ -25,10 +25,10 @@
|
||||
typedef struct
|
||||
{
|
||||
Oid foid; /* OID of the function */
|
||||
const char *funcName; /* C name of the function */
|
||||
short nargs; /* 0..FUNC_MAX_ARGS, or -1 if variable count */
|
||||
bool strict; /* T if function is "strict" */
|
||||
bool retset; /* T if function returns a set */
|
||||
const char *funcName; /* C name of the function */
|
||||
PGFunction func; /* pointer to compiled function */
|
||||
} FmgrBuiltin;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user