Skip site navigation (1) Skip section navigation (2)

wchareq improvement

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 (view raw or flat)
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: wchareq.patch
Description: application/octet-stream (560 bytes)

Responses

pgsql-patches by date

Next:From: Peter EisentrautDate: 2005-04-12 14:21:25
Subject: Re: OS Locale UTF-8
Previous:From: a_ogawaDate: 2005-04-12 14:10:36
Subject: wchareq improvement

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group