Re: Strange plpgsql performance -- arithmetic, numeric()

From: "Karl O(dot) Pinc" <kop(at)meme(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Strange plpgsql performance -- arithmetic, numeric()
Date: 2005-04-04 14:44:09
Message-ID: 1112625849l.21019l.1l@mofo
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


On 04/03/2005 08:04:27 PM, Tom Lane wrote:
> "Karl O. Pinc" <kop(at)meme(dot)com> writes:
> > Incrementing the loop counter by a factor of 10, from 1000 to 10000
> > makes the process take more than 100 times longer. (I only saw
> > this happen when I happened upon using a numeric() datatype
> > and then dividing i/100 to avoid overflow. It does not happen
> > without the array and working with other, much larger, arrays
> > of other data types you see no slowdown.)
>
> It's the array access, not the arithmetic, that's getting you.
> Since numeric is not a fixed-width datatype, accessing the N'th
> element of the array requires O(N) time to find that element.

Makes sense. Thanks. (Makes me think that these sorts of arrays
should be implimented with an extra level of indirection,
an array of pointers to the varying data, which may not be the
best way to represent arrays on disk because storage requirements
go up and disk is slow.... Anyhow, I leave it
to the coders.)

Karl <kop(at)meme(dot)com>
Free Software: "You don't pay back, you pay forward."
-- Robert A. Heinlein

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2005-04-04 14:50:25 Re: Vacuum time degrading
Previous Message John Burger 2005-04-04 14:20:24 Re: Crazy Multiplication Issue