Re: Speed up JSON escape processing with SIMD plus other optimisations
От | David Rowley |
---|---|
Тема | Re: Speed up JSON escape processing with SIMD plus other optimisations |
Дата | |
Msg-id | CAApHDvrxbZp8Ok_KiaJ1XLbgMREXCuP2zD-bhKceuDWMniW0=A@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Speed up JSON escape processing with SIMD plus other optimisations (Melih Mutlu <m.melihmutlu@gmail.com>) |
Ответы |
Re: Speed up JSON escape processing with SIMD plus other optimisations
|
Список | pgsql-hackers |
Thanks for having a look. On Wed, 12 Jun 2024 at 00:08, Melih Mutlu <m.melihmutlu@gmail.com> wrote: > In 0001 patch, I see that there are some escape_json() calls with NUL-terminated strings and gets the length by callingstrlen(), like below: > >> - escape_json(&buf, "timestamp"); >> + escape_json(&buf, "timestamp", strlen("timestamp")); > > Wouldn't using escape_json_cstring() be better instead? IIUC there isn't much difference between escape_json() and escape_json_cstring(),right? We would avoid strlen() with escape_json_cstring(). It maybe would be better, but not for this reason. Most compilers will be able to perform constant folding to transform the strlen("timestamp") into 9. You can see that's being done by both gcc and clang in [1]. It might be better to use escape_json_cstring() regardless of that as the SIMD only kicks in when there are >= 16 chars, so there might be a few more instructions calling the SIMD version for such a short string. Probably, if we're worried about performance here we could just not bother passing the string through the escape function to search for something we know isn't there and just appendBinaryStringInfo \""timestamp\":" directly. I don't really have a preference as to which of these we use. I doubt the JSON escaping rules would ever change sufficiently that the latter of these methods would be a bad idea. I just doubt it's worth the debate as I imagine the performance won't matter that much. David [1] https://godbolt.org/z/xqj4rKara
В списке pgsql-hackers по дате отправления: