Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
The zstd documentation recommends re-using context objects when possible, because their creation has some expense. They can be more cheaply reset than re-created. In ZstdDecompressor and ZstdCompressor, we create a new context object for every call to decompress() and compress(). In CPU profiles I've taken at my company, the constructor of ZstdDecompressCtx can sometimes represent 10-25% of the time spent in zstd decompression, which itself is 5-10% of a RegionServer's total CPU time. Avoiding this performance penalty won't lead to any massive performance boost, but is a nice little win.