| From: | "Joel Jacobson" <joel(at)compiler(dot)org> | 
|---|---|
| To: | "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers(at)lists(dot)postgresql(dot)org | 
| Subject: | Re: Regex back-reference semantics and performance | 
| Date: | 2021-03-01 11:13:56 | 
| Message-ID: | d80e1689-a3e4-4c86-a3e8-d22a0ac516fe@www.fastmail.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
On Mon, Mar 1, 2021, at 01:53, Tom Lane wrote:
>0001-fix-backref-semantics.patch
>0002-backref-performance-hack.patch
I've successfully tested both patches.
On HEAD the trouble-query took forever, I cancelled it after 23 minutes.
HEAD (f5a5773a9dc4185414fe538525e20d8512c2ba35):
SELECT regexp_matches(subject, pattern, 'g') FROM trouble;
^CCancel request sent
ERROR:  canceling statement due to user request
Time: 1387398.764 ms (23:07.399)
HEAD + 0001 + 0002:
SELECT regexp_matches(subject, pattern, 'g') FROM trouble;
Time: 24.943 ms
Time: 22.217 ms
Time: 20.250 ms
Very nice!
I also verified the patches gave the same result for the performance_test:
SELECT
  is_match <> (subject ~ pattern) AS is_match_diff,
  captured IS DISTINCT FROM regexp_match(subject, pattern, flags) AS captured_diff,
  COUNT(*)
FROM performance_test
GROUP BY 1,2
ORDER BY 1,2
;
is_match_diff | captured_diff |  count
---------------+---------------+---------
f             | f             | 3360068
(1 row)
No notable timing differences:
HEAD (f5a5773a9dc4185414fe538525e20d8512c2ba35)
Time: 97016.668 ms (01:37.017)
Time: 96945.567 ms (01:36.946)
Time: 95261.263 ms (01:35.261)
HEAD + 0001:
Time: 97165.302 ms (01:37.165)
Time: 96327.836 ms (01:36.328)
Time: 96295.643 ms (01:36.296)
HEAD + 0001 + 0002:
Time: 96447.527 ms (01:36.448)
Time: 94262.288 ms (01:34.262)
Time: 95331.483 ms (01:35.331)
/Joel
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Thomas Munro | 2021-03-01 11:54:49 | Re: Fix DROP TABLESPACE on Windows with ProcSignalBarrier? | 
| Previous Message | Thomas Munro | 2021-03-01 11:00:08 | Re: PostmasterIsAlive() in recovery (non-USE_POST_MASTER_DEATH_SIGNAL builds) |