HaveNFreeProcs() iterates through entire freeProcs list
От | Jim Nasby |
---|---|
Тема | HaveNFreeProcs() iterates through entire freeProcs list |
Дата | |
Msg-id | 3f1f6bba-e0f6-b3c5-ca7c-a180e31c93d7@BlueTreble.com обсуждение исходный текст |
Ответы |
Re: HaveNFreeProcs() iterates through entire freeProcs list
|
Список | pgsql-hackers |
Current HaveNFreeProcs() iterates through the entire freeProcs list (while holding ProcStructLock) just to determine if there's a small number (superuser_reserved_connections) of free slots available. For the common case, presumably it'd be faster to put the n<=0 test inside the loop and return as soon as that's true, instead of waiting until the end? BTW, the comment certainly doesn't seem accurate for the current code, since performance will be determined entirely by the number of procs on freeProcs... /* * Check whether there are at least N free PGPROC objects. * * Note: this is designed on the assumption that N will generallybe small. */ bool HaveNFreeProcs(int n) {PGPROC *proc; SpinLockAcquire(ProcStructLock); proc = ProcGlobal->freeProcs; while (n > 0 && proc != NULL){ proc = (PGPROC *) proc->links.next; n--;} SpinLockRelease(ProcStructLock); return (n <= 0); } -- Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX Experts in Analytics, Data Architecture and PostgreSQL Data in Trouble? Get it in Treble! http://BlueTreble.com 855-TREBLE2 (855-873-2532)
В списке pgsql-hackers по дате отправления: