I don't care about intermediate changes, so I'm not keeping track. I don't need to know the difference between two huge binaries, just start with a large one, keep track of changes that are small, then applicate those changes to derive a resulting binary region. It does indeed sound much like version control. Here's my use case: I have an original binary region. I make a small change to it, but I want to save only that change. I could make many of these changes, and if I applicate them in a forward direction, I should have confidence that I can produce an identical binary region as from which these differentials were derived. I could branch from a common parent and have many different differentials. So long as my application path from parent to child is sane, it produces regions.
On 21 May 2015, at 21:20, Kenneth Adam Miller
wrote: Suppose I have a rather huge binary region. Transferring it by any means is an expensive operation. But changes to it will only be some fraction at worst case as large as the binary region itself, but in practice will typically be regional byte blobs, mostly not more than a single kilobyte long.. Is there any data structure that already handles this, where I could say, have every instance start off from the original binary region, and calculate what any other instance of that data structure has by "applicating the deltas"?
Do you keep track of changes, or do you need to calculate what the difference between two given huge binaries are? You might be able to efficiently compare binaries without transferring them by computing hashes of chunks of the binaries and transfer those hashes so that you can compare those. It's not an exact comparison because you have a risk of hash collisions, but that risk is typically extremely small. Once you have a list or regions that differ then you can simply send those regions and patch the binary at the other end. What you have sounds a bit like a version control system? _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost