Создание Delta Diff-патчей больших двоичных файлов в C # - PullRequest
6 голосов
/ 21 мая 2009

Я ищу способ создания Delta Diff-патчей больших двоичных файлов (VMWare Virtual Disk Files). Есть ли реализация в C # или какие-либо полезные методы в .NET Framework.

Любая помощь приветствуется. Спасибо.

Rayt

Ответы [ 3 ]

6 голосов
/ 30 декабря 2010

bsdiff был разработан для создания очень маленьких патчей для двоичных файлов.

Как указано на его странице, он требует max(17*n,9*n+m)+O(1) байтов памяти и выполняется за O((n+m) log n) время (где n - это размер старого файла, а m - это размер нового файла), это займет много времени и потребует огромного количества памяти для создания различий для файлов виртуальных дисков.

Исходная реализация находится на C, но порт C # описан здесь и доступен здесь .

3 голосов
/ 24 февраля 2011

Вот класс C #, который реализует разностный алгоритм Мейерса O (ND):

http://www.mathertel.de/Diff/default.aspx

Наслаждайтесь!

3 голосов
/ 21 мая 2009

Нет ничего встроенного в структуру, чтобы сделать это.

Вам придется искать сторонние решения, коммерческие или бесплатные, или написать свои собственные.

Распространенным алгоритмом является алгоритм VCDiff , который используется довольно большим количеством продуктов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...