Re: [PATCHES] wchareq improvement

2005-05-26 Thread a_ogawa

Bruce Momjian wrote:

 Patch applied with adjustment --- the second part of your patch that
 skips comparing the first byte seemed unnecessary.  It seemed likely
 to cause a cpu stall, so just doing the loop seemed faster.

 Did you test if the second part of your patch actually caused a speedup?

Well, I measured the performance today. As a result, I confirmed the
second part of my patch is unnecessary as you pointed it out.
Thanks for comment and applying patch.

 a_ogawa wrote:
 
  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.

regards,

--- Atsushi Ogawa


---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


[PATCHES] wchareq improvement

2005-04-12 Thread a_ogawa

In SQL that uses 'like' operator, wchareq is used to compare character. 

At the head of wchareq, length of 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   selfself   total
time  seconds   secondscalls 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  100   0.00   0.00 MBMatchText
 5.38 1.10 0.22  100   0.00   0.00 HeapTupleSatisfiesSnapshot
 5.13 1.31 0.21   90   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.320.32   100   0.00   0.00 MBMatchText
 7.75 0.610.29   100   0.00   0.00 HeapTupleSatisfiesSnapshot
 6.42 0.850.24   100   0.00   0.00 slot_deform_tuple
 5.88 1.070.22   8789050   0.00   0.00 pg_euc_mblen
 5.88 1.290.22   112   0.00   0.00 heapgettup
 5.61 1.500.2190   0.00   0.00 ExecMakeFunctionResultNoSets

execution time(compile option "-O2"):
 original code: 4.795sec
 patched code:  4.496sec

regards,

--- Atsushi Ogawa


---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly

[PATCHES] wchareq improvement

2005-04-12 Thread a_ogawa

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   selfself   total
time  seconds   secondscalls 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  100   0.00   0.00 MBMatchText
 5.38 1.10 0.22  100   0.00   0.00 HeapTupleSatisfiesSnapshot
 5.13 1.31 0.21   90   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.320.32   100   0.00   0.00 MBMatchText
 7.75 0.610.29   100   0.00   0.00 HeapTupleSatisfiesSnapshot
 6.42 0.850.24   100   0.00   0.00 slot_deform_tuple
 5.88 1.070.22   8789050   0.00   0.00 pg_euc_mblen
 5.88 1.290.22   112   0.00   0.00 heapgettup
 5.61 1.500.2190   0.00   0.00 ExecMakeFunctionResultNoSets

execution time(compile option "-O2"):
 original code: 4.795sec
 patched code:  4.496sec

regards,

--- Atsushi Ogawa

wchareq.patch
Description: Binary data

---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match