diff options
author | Michael Paquier <michael@paquier.xyz> | 2022-02-10 10:27:29 +0900 |
---|---|---|
committer | Michael Paquier <michael@paquier.xyz> | 2022-02-10 10:27:29 +0900 |
commit | 4567596316d186c6e61c72df013797266fcac2f7 (patch) | |
tree | b1dba64375bc8b58dc6afd4ec041b19fb6704759 /src/backend/commands/async.c | |
parent | f0cd9097cfac435ec18ab2595c81f13a14736758 (diff) | |
download | postgresql-4567596316d186c6e61c72df013797266fcac2f7.tar.gz postgresql-4567596316d186c6e61c72df013797266fcac2f7.zip |
Reduce more the number of calls to GetMaxBackends()
Some of the code paths changed by aa64f23 can reduce the number of times
GetMaxBackends() is called. The performance gain is marginal, but most
of the code changed by this commit already did that. Hence, let's be
clean and apply the same rule everywhere, for consistency.
Some of the code paths, like in deadlock.c, involve only assertions.
These are left unchanged.
Reviewed-by: Nathan Bossart, Robert Haas
Discussion: https://postgr.es/m/YgMpGZhPOjNfS7er@paquier.xyz
Diffstat (limited to 'src/backend/commands/async.c')
-rw-r--r-- | src/backend/commands/async.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c index d44001a49f3..455d895a44a 100644 --- a/src/backend/commands/async.c +++ b/src/backend/commands/async.c @@ -1633,6 +1633,7 @@ SignalBackends(void) int32 *pids; BackendId *ids; int count; + int max_backends = GetMaxBackends(); /* * Identify backends that we need to signal. We don't want to send @@ -1642,8 +1643,8 @@ SignalBackends(void) * XXX in principle these pallocs could fail, which would be bad. Maybe * preallocate the arrays? They're not that large, though. */ - pids = (int32 *) palloc(GetMaxBackends() * sizeof(int32)); - ids = (BackendId *) palloc(GetMaxBackends() * sizeof(BackendId)); + pids = (int32 *) palloc(max_backends * sizeof(int32)); + ids = (BackendId *) palloc(max_backends * sizeof(BackendId)); count = 0; LWLockAcquire(NotifyQueueLock, LW_EXCLUSIVE); |