In my opinion a PPM based coder should be considered as next-generation compressor for dynamic textual content. PPM has several advantages for such purposes:
- it can scale down well with memory usage - on
http://mattmahoney.net/dc/text.html we see that ppmsj compressed enwik9 to 233 MB using only 1.8 MB of RAM for compression
- it works especially well with small input data, compared to LZ, because LZ's strength always increase as the sliding window fills, whereas in PPM case long input data causes model pruning or restarting which decreases compression
- it is easy to pre-train
- it has minimal latency as each symbol is processed separately, unlike typical strong LZ algorithms that divide input into chunks for parsing (selecting matches)
- it has better compression ratio than LZ even if we constrain the memory limit for decompression to the same level for both PPM and LZ