Re: Manipulating complex types as non-contiguous structures in-memory

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Manipulating complex types as non-contiguous structures in-memory
Дата
Msg-id 4689.1429275482@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Manipulating complex types as non-contiguous structures in-memory  (Heikki Linnakangas <hlinnaka@iki.fi>)
Ответы Re: Manipulating complex types as non-contiguous structures in-memory  (Heikki Linnakangas <hlinnaka@iki.fi>)
Список pgsql-hackers
Heikki Linnakangas <hlinnaka@iki.fi> writes:
> On 03/28/2015 11:24 PM, Tom Lane wrote:
>> +  * Macros for iterating through elements of a flat or expanded array.

> How about a struct instead?

> struct ArrayIter {
>      Datum   datumptr;
>      bool   isnullptr;
>      char   dataptr;
>      bits8  bitmapptr;
>      int       bitmask
> }

> Seems more natural.

Yes, and much less efficient I'm afraid.  Most compilers would be unable
to put the variables into registers, which is important for these inner
loops.

> How about turning these into functions?

Likewise.  The point of doing it like this was to avoid taking an
efficiency hit compared to the existing code.

It's conceivable that we could avoid such a hit by marking the functions
all "inline", but I'm not certain that they'd get inlined, and the
question of whether the variables could be in registers would remain.
        regards, tom lane



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

Предыдущее
От: Stephen Frost
Дата:
Сообщение: Re: INSERT ... ON CONFLICT IGNORE (and UPDATE) 3.0
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: pg_upgrade in 9.5 broken for adminpack