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 по дате отправления: