pgsql: Speed up plpgsql function startup by doing fewer pallocs.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Speed up plpgsql function startup by doing fewer pallocs.
Date: 2018-02-14 00:10:51
Message-ID: E1elkex-0001zE-Gh@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Speed up plpgsql function startup by doing fewer pallocs.

Previously, copy_plpgsql_datum did a separate palloc for each variable
needing instance-local storage. In simple benchmarks this made for a
noticeable fraction of the total runtime. Improve it by precalculating
the space needed for all of a function's variables and doing just one
palloc for all of them.

In passing, remove PLPGSQL_DTYPE_EXPR from the list of plpgsql "datum"
types, since in fact it has nothing in common with the others, and there
is noplace that needs to discriminate on the basis of dtype between an
expression and any type of datum. And add comments clarifying which
datum struct fields are generic and which aren't.

Tom Lane, reviewed by Pavel Stehule

Discussion: https://postgr.es/m/11986.1514407114@sss.pgh.pa.us

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/40301c1c8bcbe92a9ba9bf017da03e83476ae0e5

Modified Files
--------------
src/pl/plpgsql/src/pl_comp.c | 17 +++++++
src/pl/plpgsql/src/pl_exec.c | 111 ++++++++++++++++++++++++-------------------
src/pl/plpgsql/src/pl_gram.y | 4 --
src/pl/plpgsql/src/plpgsql.h | 84 +++++++++++++++++++-------------
4 files changed, 130 insertions(+), 86 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2018-02-14 00:20:42 pgsql: Speed up plpgsql trigger startup by introducing "promises".
Previous Message Tom Lane 2018-02-13 23:52:38 pgsql: Make plpgsql use its DTYPE_REC code paths for composite-type var