Re: [PATCH] Avoid unnecessary code execution in Instrument.c when TIMING is FALSE - Mailing list pgsql-hackers

From Michael Paquier
Subject Re: [PATCH] Avoid unnecessary code execution in Instrument.c when TIMING is FALSE
Date
Msg-id aIQheEPZiiIp4RVP@paquier.xyz
Whole thread Raw
In response to [PATCH] Avoid unnecessary code execution in Instrument.c when TIMING is FALSE  (Hironobu SUZUKI <hironobu@interdb.jp>)
Responses Re: [PATCH] Avoid unnecessary code execution in Instrument.c when TIMING is FALSE
List pgsql-hackers
On Sat, Jul 26, 2025 at 12:26:21AM +0900, Hironobu SUZUKI wrote:
> Even when using EXPLAIN ANALYZE with TIMING=FALSE, the functions
> InstrStopNode(), InstrEndLoop(), and InstrAggNode() in Instrument.c still
> execute code related to the "starttime", "counter", "firsttuple", "startup",
> and "total" fields within the Instrumentation structure.
> These operations are unnecessary when timing is disabled, and since these
> functions are called very frequently, I have created a patch to address
> this.
>
> As far as I can tell, this change has no side effects and clarifies the
> intent of each line, but please let me know if you notice any issues.

Spoiler: this has been discussed during a meetup attended by most of
the PostgreSQL hackers based in Tokyo and surroundings on the 18th of
July, where Suzuki-san has noticed that the work done by the backend
was pointless when using the instrumentation while hacking on an
extension that relied at least on the explain hook.  One of the
remarks was that this seemed worth a submission to upstream when
timers are disabled.  The performance really took a hit when the timer
was disabled, making the extension do a lot of unnecessary work for
nothing.
--
Michael

Attachment

pgsql-hackers by date:

Previous
From: Daniel Bauman
Date:
Subject: Doc update proposal for the note on log_statement in the runtime config for logging page
Next
From: Richard Guo
Date:
Subject: Pushing down a subquery relation's ppi_clauses, and more ...