mirror of
https://github.com/postgres/postgres.git
synced 2026-01-26 09:41:40 +03:00
Always inline SeqNext and SeqRecheck
The intention of the work done in fb9f95502 was that these functions are
inlined. I noticed my compiler isn't doing this on -O2 (gcc version
15.2.0). Also, clang version 20.1.8 isn't inlining either. Fix by
marking both of these functions as pg_attribute_always_inline to avoid
leaving this up to the compiler's heuristics.
A quick test with a Seq Scan on a table with a single int column running
a query that filters all 1 million rows in the WHERE clause yields a
3.9% speedup on my Zen4 machine.
Author: David Rowley <dgrowleyml@gmail.com>
Discussion: https://postgr.es/m/CAApHDvrL7Q41B=gv+3wc8+AJGKZugGegUbBo8FPQ+3+NGTPb+w@mail.gmail.com
This commit is contained in:
@@ -47,7 +47,7 @@ static TupleTableSlot *SeqNext(SeqScanState *node);
|
||||
* This is a workhorse for ExecSeqScan
|
||||
* ----------------------------------------------------------------
|
||||
*/
|
||||
static TupleTableSlot *
|
||||
static pg_attribute_always_inline TupleTableSlot *
|
||||
SeqNext(SeqScanState *node)
|
||||
{
|
||||
TableScanDesc scandesc;
|
||||
@@ -86,7 +86,7 @@ SeqNext(SeqScanState *node)
|
||||
/*
|
||||
* SeqRecheck -- access method routine to recheck a tuple in EvalPlanQual
|
||||
*/
|
||||
static bool
|
||||
static pg_attribute_always_inline bool
|
||||
SeqRecheck(SeqScanState *node, TupleTableSlot *slot)
|
||||
{
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user