Indigo Rose Software
  #1  
Old 10-01-2007
jlsf2 jlsf2 is offline
Forum Member
 
Join Date: May 2007
Posts: 101
unexpected Patch sizes

I have a project with 4 versions in it. Depending on the changes made to the application, and in order to reduce the size of downloads required by the user, I will create different patch files that support different versions.
e.g. patch file #1 that goes from v1/v2/v3 -> v4
patch file #2 that goes from v3 -> v4

Previously, I had a patch file:
v1/v2 -> v3, size == 2.8MB

With my latest release, I have created these two patch files:
v3 -> v4, size == 3.8MB
v1/v2/v3 -> v4, size == 11.5MB

I've tried similar things in the past with VP2/VP3 and things have been optimized pretty well.

This though seems like something is seriously wrong with the optimizer... In the worst case, I would expect my largest size patch to be only 6.6MB (2.8+3.8).

Any ideas what is going on here?
Reply With Quote
  #2  
Old 10-16-2007
SteveDude SteveDude is offline
Indigo Rose Customer
 
Join Date: Jun 2007
Posts: 32
...

Are you using any compression software for your app. I heard that will make patches larger.
Reply With Quote
  #3  
Old 10-16-2007
Lorne's Avatar
Lorne Lorne is offline
Indigo Rose Staff Member
 
Join Date: Feb 2001
Location: Indigo Rose Software
Posts: 2,588
The multi-version patches aren't internally sequential -- Visual Patch isn't creating diffs to go from 1 to 2, then 2 to 3, then 3 to 4. It's creating diffs to go from 1 to 4, and 2 to 4, and 3 to 4.

In other words, it does multi-version patching in parallel.

Which approach is better depends on the situation. Sometimes a sequential approach will generate smaller patches, sometimes a parallel one will. One of the items on my list of future optimizations is to have Visual Patch build both kinds of diffs (parallel and sequential) and then choose between them.

In your case, jlsf2, it sounds like there more changes between the first two versions and version 4 than there were between them and version 3. You might want to consider keeping the 1-2-3 patch, and then just using the 3-4 patch (and go on from there).

(If you use TrueUpdate, you could automate the whole process and use sequential patches for the smallest possible patch files.)
__________________
--[[ Indigo Rose Software Developer ]]
Reply With Quote
  #4  
Old 10-16-2007
jlsf2 jlsf2 is offline
Forum Member
 
Join Date: May 2007
Posts: 101
Regarding the use of compressed files - do you have a thread reference for that?
Reply With Quote
  #5  
Old 10-16-2007
SteveDude SteveDude is offline
Indigo Rose Customer
 
Join Date: Jun 2007
Posts: 32
...

It's here

http://www.indigorose.com/forums/showthread.php?t=21481
Reply With Quote
  #6  
Old 10-16-2007
Lorne's Avatar
Lorne Lorne is offline
Indigo Rose Staff Member
 
Join Date: Feb 2001
Location: Indigo Rose Software
Posts: 2,588
Quote:
Regarding the use of compressed files - do you have a thread reference for that?
It's just a general property of binary differencing.

Binary differencing relies on finding similarities between two files.

Most compression methods hide those similarities to the point where two versions of a file appear internally as two completely different files. It's harder to find matching patterns between the files, because all their patterns have been reduced and reconfigured, forming completely new patterns.

Instead of seeing the changes that were made to the original file, you end up seeing the differences between how the compression method describes the two versions.

The DeltaMAX patching engine used in Visual Patch is very good at finding similarities between files. But it will usually achieve much better results on files that haven't been compressed.

(This is also true for files that have been encrypted. With encryption, as with compression, the file's original patterns are hidden on purpose.)
__________________
--[[ Indigo Rose Software Developer ]]
Reply With Quote
  #7  
Old 10-16-2007
jlsf2 jlsf2 is offline
Forum Member
 
Join Date: May 2007
Posts: 101
Ok, compression isn't a problem for me.

Lorne, I can see where that could happen, although it seems like more of a border case where serial would be better (of course, it would help in my situation).

Implementing both serial and parallel comparisons seems like it could get awful messy - to get truly the best implementation, you'd want to mix and match serial and parallel from version to version - and that could grow to far too many cases to check.

I guess just doing an all serial or all parallel would be the simplest approach and would likely get you 90% of the benefit.

Thanks for the info.
Reply With Quote
  #8  
Old 10-16-2007
Lorne's Avatar
Lorne Lorne is offline
Indigo Rose Staff Member
 
Join Date: Feb 2001
Location: Indigo Rose Software
Posts: 2,588
Quote:
Originally Posted by jlsf2 View Post
Lorne, I can see where that could happen, although it seems like more of a border case where serial would be better (of course, it would help in my situation).

Implementing both serial and parallel comparisons seems like it could get awful messy - to get truly the best implementation, you'd want to mix and match serial and parallel from version to version - and that could grow to far too many cases to check.
Yes, there would be a lot of combinations, but it wouldn't affect build times much if diff caching was enabled. It's still something I'd like to try in the future, but it isn't a high priority since parallel patching works very well in the majority of multi-version patches. It's also completely irrelevant for single-version patches (which are already sequential).

Quote:
I guess just doing an all serial or all parallel would be the simplest approach and would likely get you 90% of the benefit.
True, but it wouldn't be quite as cool.
__________________
--[[ Indigo Rose Software Developer ]]
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Visual Patch 3.0 Simplifies Software Patch Packaging Ted Sullivan Announcements & News 0 08-07-2007 02:38 PM
Key Features of Visual Patch 2.0 Ted Sullivan Visual Patch 2.0 0 04-08-2005 03:56 PM
What's New in Visual Patch 2.0? Ted Sullivan Visual Patch 2.0 0 04-08-2005 03:53 PM
Frequently Asked Questions Ted Sullivan Visual Patch 2.0 0 04-08-2005 03:49 PM
Visual Patch 1.0 Documentation Ted Sullivan Visual Patch 1.0 0 11-18-2003 02:53 PM


All times are GMT -6. The time now is 11:43 PM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Copyright © 2000 - 2009 Indigo Rose Corporation. All rights reserved.
Indigo Rose Software