Re: Speeding up COPY TO for uuids and arrays
От | Laurenz Albe |
---|---|
Тема | Re: Speeding up COPY TO for uuids and arrays |
Дата | |
Msg-id | 1339b52e16d4977ce59a9d3e91837c1033713930.camel@cybertec.at обсуждение исходный текст |
Ответ на | Re: Speeding up COPY TO for uuids and arrays (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: Speeding up COPY TO for uuids and arrays
|
Список | pgsql-hackers |
On Sat, 2024-02-17 at 12:24 -0800, Andres Freund wrote: > On 2024-02-17 17:48:23 +0100, Laurenz Albe wrote: > > - Patch 0001 speeds up pq_begintypsend with a custom macro. > > That brought the binary copy down to 3.7 seconds, which is a > > speed gain of 15%. > > Nice win, but I think we can do a bit better than this. Certainly it shouldn't > be a macro, given the multiple evaluation risks. I don't think we actually > need to zero those bytes, in fact that seems more likely to hide bugs than > prevent them. > > I have an old patch series improving performance in this area. The multiple evaluation danger could be worked around with an automatic variable, or the macro could just carry a warning (like appendStringInfoCharMacro). But considering the thread in [1], I guess I'll retract that patch; I'm sure the more invasive improvement you have in mind will do better. > > - Patch 0001 speeds up uuid_out by avoiding the overhead of > > a Stringinfo. This brings text mode COPY to 19.4 seconds, > > which is speed gain of 21%. > > Nice! > > I wonder if we should move the core part for converting to hex to numutils.c, > we already have code the for the inverse. There does seem to be further > optimization potential in the conversion, and that seems better done somewhere > central rather than one type's output function. OTOH, it might not be worth > it, given the need to add the dashes. I thought about it, but then decided not to do that. Calling a function that converts the bytes to hex and then adding the hyphens will slow down processing, and I think the code savings would be minimal at best. > > - Patch 0003 speeds up array_out a bit by avoiding some zero > > byte writes. The measured speed gain is under 2%. > > Makes sense. Thanks for your interest and approval. The attached patches are the renamed, but unmodified patches 2 and 3 from before. Yours, Laurenz Albe [1]: https://postgr.es/m/CAMkU%3D1whbRDUwa4eayD9%2B59K-coxO9senDkPRbTn3cg0pUz4AQ%40mail.gmail.com
Вложения
В списке pgsql-hackers по дате отправления: