Versions tested: | 2, 3c |
Optimal parameters: | default |
Links: | sr2.zip sr3c-1.0.zip |
Authors: | Matt Mahoney, Kenneth Oksanen |
Algorithms: | SR+ARI |
Notable peformances: | - |
A 20-bit hashed order-4 context is mapped into the last 3 bytes seen in that context in a move-to-front queue, plus a consecutive hit count. Queue positions (hits) or literals (misses) are arithmetic coded using the count and an an order-1 context (order-0 if the count is more than 3) as secondary context. After a byte is coded, it is moved to the front of the queue. The hit count is updated as follows: incremented (max 63) if the first byte is matched, set to 1 if any other byte is matched, or set to 0 in case of a miss.sr2 description from LTCB
sr 3C (aka SR3C) is a rewrite of sr 2 in C by Kenneth Oksanen. http://cessu.blogspot.com/2008/11/sr3c.html We use the version by Matt Mahoney which implements an interface for the SR3C.
The author of sr 3C describes the program.
email 2009, Oct 15
- SR3C uses significantly less memory than SR3 and SR3A.
- The hash table used for storing contexts is two-way associative instead of the direct-mapped hash table of SR3, and a 4-bit checksum has been added to each context.
- The policy of updating probabilities of arithmetically encoding rank bits and the policy for updating the MTF-queue has also been modified slightly.
- SR3C is a an implementation in plain C and it uses a callback-based interface. The code is re-entrant for separate compression streams.
(Have info that should be added here? E-mail.)
Ver | Rating | CPR | DPR | S.E. | R.E. | Ratio | C. kB/s | D. kB/s | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
<none> | ||||||||||||
2 | 5 | 12 | 0 | 75 | 0 | 2.644 | 15371 | 12529 | ||||
3c | 7 | + | + | -17% | 2.768 | +4.7% | 9213 | -40% | 9947 | -21% |