Re: double and numeric conversion

Поиск
Список
Период
Сортировка
От Theo Schlossnagle
Тема Re: double and numeric conversion
Дата
Msg-id B0DA3429-2865-4113-9E0F-CDAF1112B46C@omniti.com
обсуждение исходный текст
Ответ на Re: double and numeric conversion  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: double and numeric conversion
Список pgsql-hackers
On Mar 1, 2010, at 4:35 PM, Tom Lane wrote:

> Theo Schlossnagle <jesus@omniti.com> writes:
>> I'm writing some extension and I have a hot code path that has a lot of double (C type) data and needs to output
NUMERICtuple data.  The current methods I can find in the code to convert sprintf the double to a buffer and then
invokethe numeric_in function on them.  I've profile my stuff and I'm spending (wasting) all my time in that
conversion. Is there a more efficient method of converting a double into a postgres numeric value? 
>
> If you're worried about micro-optimization, why are you using NUMERIC at
> all?  It's no speed demon.
>
> Although you might be able to shave some cycles with a dedicated code
> path for this conversion, binary to decimal is fundamentally not cheap.

I feared that was the case.  I spent an hour or so coding that last night and the speedups for me were worth it, I see
a2 fold speedup in conversion operations (or a 50% reduction in CPU cycles per conversion).  The integer ones were
trivial,the double one has the imperfect issue of reasonably guessing the dscale, but seems to work in my tests. 

I didn't look deeply at the postgres internals to see if there was a way to do double -> numeric and integer-types ->
numericwithout intermediary string format.  If that sort of thing is easy to leverage, I'd be happy to share the code. 

--
Theo Schlossnagle
http://omniti.com/is/theo-schlossnagle







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

Предыдущее
От: Fujii Masao
Дата:
Сообщение: Re: Streaming replication and pg_xlogfile_name()
Следующее
От: Hiroshi Inoue
Дата:
Сообщение: Re: [GENERAL] trouble with to_char('L')