Re: pgbench client-side performance issue on large scripts
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: "Daniel Verite" <daniel@manitou-mail.org>
Cc: pgsql-hackers@postgresql.org
Date: 2025-02-24T20:30:59Z
Lists: pgsql-hackers
I wrote: > Yeah, we do rely on yylineno in bootscanner.l and ecpg, but not > elsewhere; not sure if there's a performance reason for that. Ah: the flex manual specifically calls out "%option yylineno" as something that has a moderate performance cost. So that's why we don't use it except in non-performance-critical scanners. Now, it could be argued that pgbench's script scanner doesn't rise to that level of performance-criticalness, especially not if we're paying the cost of counting newlines some other way. I'm not excited about doing a lot of performance analysis here to decide that. I think we could steal plpgsql's idea to keep the code structure basically the same while avoiding the O(N^2) repeat scans, and that should be enough. regards, tom lane
Commits
-
Avoid unnecessary computation of pgbench's script line number.
- 6eb8a1a4f90c 18.0 landed
-
Get rid of O(N^2) script-parsing overhead in pgbench.
- c8c74ad7e1cb 18.0 landed