I know that there is an inherent limit to how much you can compress data using lossless compression.
Basically, the only thing lossless compression can do is reduce dependencies between symbols, remove repetitions, and so on, so that the result looks more like completely random data rather than what we usually see.
From what I understand, nowadays the optimal method of compression, which gets very close to the theoretical optimum of making your data look like random garbage, is arithmetical coding that doesn't really operate on the level of characters at all, but this isn't used in most applications. (I'll save the why not? for a different question).
Instead, we use algorithms like DEFLATE that combine Huffman coding and LZ77 to achieve better efficiency than either alone.
How efficient are these algorithms, as commonly implemented, compared to the optimal efficiency?