From: | "Andrey M(dot) Borodin" <x4mmm(at)yandex-team(dot)ru> |
---|---|
To: | John Naylor <johncnaylorls(at)gmail(dot)com> |
Cc: | David Rowley <dgrowleyml(at)gmail(dot)com>, Антуан Виолин <violin(dot)antuan(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Sort functions with specialized comparators |
Date: | 2025-01-07 05:59:22 |
Message-ID: | D1945B5E-188C-4C83-8AA0-2D0F80248403@yandex-team.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> On 7 Jan 2025, at 09:43, John Naylor <johncnaylorls(at)gmail(dot)com> wrote:
>
>> With the same setup as in the first message of this thread we can do:
>>
>> postgres=# SELECT _int_contains(arr,ARRAY[1]) FROM arrays_to_sort;
>>
>> before patch patch
>> Time: 567.928 ms
>> after patch
>> Time: 890.297 ms
>> timing of this function is dominated by PREPAREARR(a);
>>
>> What bothers me is that PREPAREARR(a); is returning new array in case of empty input. That's why I considered little refactoring of resize_intArrayType(): reorder cases so that if (num == ARRNELEMS(a)) was first.
>
> Hmm, I'm confused. First, none of the arrays are empty that I can see
> -- am I missing something?
Ugh...sorry, I posted very confusing results. For starters, I swapped "patched" and "unpatched" results. So results show clear improvement in default case.
I'm worried about another case that we cannot measure: PREPAREARR(a) on empty array will return new array.
And one more case.
BTW for pre-sorted desc arrays desc sorting is slower:
postgres=# CREATE TABLE arrays_sorted_desc AS
SELECT a arr
FROM
(SELECT ARRAY(SELECT -i from generate_series(1, 1000000)i) a),
generate_series(1, 10);
SELECT 10
Time: 707.016 ms
postgres=# SELECT (sort_desc(arr))[0] FROM arrays_sorted_desc;
Time: 41.874 ms
but with a patch
postgres=# SELECT (sort_desc(arr))[0] FROM arrays_sorted_desc;
Time: 166.837 ms
Best regards, Andrey Borodin.
From | Date | Subject | |
---|---|---|---|
Next Message | Masahiko Sawada | 2025-01-07 06:00:19 | Re: Conflict detection for update_deleted in logical replication |
Previous Message | John Naylor | 2025-01-07 04:57:45 | Re: Sort functions with specialized comparators |