BUG #8495: PLSQL PG Terrible performance by using two-dimensional arrays.

Поиск
Список
Период
Сортировка
От m.manso@upm.es
Тема BUG #8495: PLSQL PG Terrible performance by using two-dimensional arrays.
Дата
Msg-id E1VQuta-0007Y4-Ip@wrigleys.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #8495: PLSQL PG Terrible performance by using two-dimensional arrays.  (Pavel Stehule <pavel.stehule@gmail.com>)
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      8495
Logged by:          Miguel A. Manso Callejo
Email address:      m.manso@upm.es
PostgreSQL version: 9.1.9
Operating system:   Ubuntu 12.04LTS
Description:

I'm trying to random access to a 2-dimensional array of double precision
numbers. When range of the array increase, the performance decrease
quickly.
A simple function as:
CREATE OR REPLACE FUNCTION fill_2d_array( rows integer, cols integer)
RETURNS integer AS
$BODY$
DECLARE
    img double precision[][];
    i integer; j integer;
    cont integer;
BEGIN
    img  := ARRAY( SELECT 0 FROM generate_series(1, rows * cols) ) ;
    cont:= 0;
    For i IN 1..rows LOOP
        For j IN 1..cols LOOP
            img[i * cols + j] := (i * cols + j)::double precision;
            cont := cont + 1;
        END LOOP;
    END LOOP;
    return cont;
END;
$BODY$
  LANGUAGE plpgsql;
ALTER FUNCTION fill_2d_array( integer, integer)
  OWNER TO postgres;


when call the function with 700 rows & 1200 cols (explain (analyze,buffers)
select fill_2d_array(700,1200); ) the time consumed is about 50minutes.


What is bad? what i'm doing bad?


Thank you very much.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: ha@canwrx.com
Дата:
Сообщение: BUG #8494: Cannot Backup / Restore
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: BUG #8495: PLSQL PG Terrible performance by using two-dimensional arrays.