That is a statement you can make, but you have to actually demonstrate this is true against zstd's --train mechanism [1] which generates a more optimized "small string" dictionary based on representative training data precisely for this use-case.
[1] https://github.com/facebook/zstd/blob/dev/programs/zstd.1.md
> those are used for different scenarios. zstd is used for data compression, the meta string encoding here is used for meta meta encoding
Not sure what this means. The motivating use-case described for the alternate string encoding is precisely compression.
zstd’s approach is fundamentally very different from a basic interning dictionary. Seriously, there’s been tons of research on this. It’s also interesting that Fury claims to be 0-copy and then does all these ad-hoc field compression which is the literal definition of not 0-copy (& yes, varint encoding is not 0-copy and neither is this custom string compression).
Anyway, unless you actually do a proper comparison against zstd with a trained dictionary against a representative corpus, we’re just going in circles with me saying “you need to evaluate your ad-hoc compression against zstd” and you trying to argue from first principles that the custom compression scheme wins.
The thing here are that all those RPC are stateless, so the context for compression are the one message itself. i.e. compress object like `Point(1,2)` only without priori knowledge. Users may use train static zstd. But Fury can't, Fury doesn't know which data will be serialized.
And meta string encoding are not statistical, it won't beats zstd. It's just for cases zstd is not suitable.
You can hardcode expected frequencies and throw arithmetic encoding at it and the average size will probably drop a meaningful amount.
And I can't easily find an example corpus, but the description of these strings sounds like they'd often have repetition, so another symbol to encode repetition and make this into a normal compression algorithm is probably worth it.
I wonder how many of these string start with org.apache