From: | a_ogawa <a_ogawa(at)hi-ho(dot)ne(dot)jp> |
---|---|
To: | pgsql-patches(at)postgresql(dot)org |
Subject: | wchareq improvement |
Date: | 2005-04-12 14:17:20 |
Message-ID: | PIEMIKOOMKNIJLLLBCBBCEBMCGAA.a_ogawa@hi-ho.ne.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-patches |
I forgot to attach a patch. I do post once again.
In SQL that uses 'like' operator, wchareq is used to compare characters.
At the head of wchareq, length of (multibyte) character is compared by
using pg_mblen. Therefore, pg_mblen is executed many times, and it
becomes a bottleneck.
This patch makes a short cut, and reduces execution frequency of pg_mblen.
test.sql:
select count(*) from accounts
where aid like '%1';
... (repeated 10 times)
test command:
$ psql -f test.sql
result of original code(compile option "-O2 -pg"):
-----------------------------------------------------------------------
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
7.82 0.32 0.32 17566930 0.00 0.00 pg_euc_mblen
7.09 0.61 0.29 17566930 0.00 0.00 pg_mblen
6.60 0.88 0.27 1000000 0.00 0.00 MBMatchText
5.38 1.10 0.22 1000000 0.00 0.00 HeapTupleSatisfiesSnapshot
5.13 1.31 0.21 999990 0.00 0.00 ExecMakeFunctionResultNoSets
4.89 1.51 0.20 17566930 0.00 0.00 pg_eucjp_mblen
result of patched code(compile option "-O2 -pg"):
------------------------------------------------------------
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
8.56 0.32 0.32 1000000 0.00 0.00 MBMatchText
7.75 0.61 0.29 1000000 0.00 0.00 HeapTupleSatisfiesSnapshot
6.42 0.85 0.24 1000000 0.00 0.00 slot_deform_tuple
5.88 1.07 0.22 8789050 0.00 0.00 pg_euc_mblen
5.88 1.29 0.22 1000012 0.00 0.00 heapgettup
5.61 1.50 0.21 999990 0.00 0.00 ExecMakeFunctionResultNoSets
execution time(compile option "-O2"):
original code: 4.795sec
patched code: 4.496sec
regards,
--- Atsushi Ogawa
Attachment | Content-Type | Size |
---|---|---|
wchareq.patch | application/octet-stream | 560 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2005-04-12 14:21:25 | Re: OS Locale UTF-8 |
Previous Message | a_ogawa | 2005-04-12 14:10:36 | wchareq improvement |