Speed up uuid_out() by not relying on a StringInfo

Michael Paquier <michael@paquier.xyz>

Commit: 011d60c4352c5c48c0f1a185e8a12833c22a58db
Author: Michael Paquier <michael@paquier.xyz>
Date: 2024-02-22T01:02:55Z
Releases: 17.0
Speed up uuid_out() by not relying on a StringInfo

Since the size of the string representation of an uuid is fixed, there
is no benefit in using a StringInfo.  This commit simplifies uuid_oud()
to not rely on a StringInfo, where avoiding the overhead of the string
manipulation makes the function substantially faster.

A COPY TO on a relation with one UUID attribute can show up to a 40%
speedup when the bottleneck is the COPY computation with uuid_out()
showing up at the top of the profiles (numbered measure here, Laurenz
has mentioned something closer to 20% faster runtimes), for example when
the data is fully in shared buffers or the OS cache.

Author: Laurenz Albe
Reviewed-by: Andres Freund, Michael Paquier
Description: https://postgr.es/m/679d5455cbbb0af667ccb753da51a475bae1eaed.camel@cybertec.at

Files

PathChange+/−
src/backend/utils/adt/uuid.c modified +10 −6