Googles appar
Huvudmeny

Post a Comment On: cbloom rants

"01-09-12 - LZ Optimal Parse with A Star Part 5"

5 Comments -

1 – 5 of 5
Blogger ryg said...

What's the relative speed of the Chain* variants compared to A*, and how much slower is ChainN compared to Chain1 (assuming a Suffix Tree or similarly fast match finder)?

January 11, 2012 at 8:20 PM

Blogger cbloom said...

"What's the relative speed of the Chain* variants compared to A*"

A* is a lot more variable. It can be as fast as Chain3 or so, but sometimes as bad as Chain6 or so.

"and how much slower is ChainN compared to Chain1 (assuming a Suffix Tree or similarly fast match finder)? "

First of all, something I maybe didn't point out is that both for ChainN and A* to be reasonably fast you have to pre-find all matches. So I decide in advance that I will consider at most 8 matches per position, and I go find all those matches and save them in an array. So you never redo match finding as you parse.

If it's 8 matches, then Chain N+1 is 8X slower than Chain N.

I should make clear that even if Chain was fast enough, it's not super awesome because it uses a pretty rough approximation for the cost to end after the N steps which doesn't include the current state at all. A* doesn't have this drawback.

At the moment Chain is more usable in production because I haven't found a good way to control the occasional very long time that A* takes.

January 12, 2012 at 2:28 PM

Blogger Cyan said...

So it basically means that current LZMA could get even better compression performance by using one of your methodologies ?

January 15, 2012 at 4:00 AM

Blogger cbloom said...

Yes!

January 15, 2012 at 11:00 AM

Blogger cbloom said...

Though only something like 1-3%

January 15, 2012 at 11:01 AM

You can use some HTML tags, such as <b>, <i>, <a>

This blog does not allow anonymous comments.

Comment moderation has been enabled. All comments must be approved by the blog author.

You will be asked to sign in after submitting your comment.