I've done some comparison, but its still hard to get any conclusions -
it doesn't seem like there's a best method for all cases.
Some observations:
- original dispack crashes so I had to use freearc instead :)
- courgette crashes on bcj-processed files (and is lossy anyway)
- courgette disasm doesn't help, but dispack actually does
- courgette has a newer bsdiff engine, a little more efficient
xbmc20672_vs_xbmc26071
Code:
4469016 - xbmc_26071_lzma
3863435 - bsdiff
2949529 - e8+dispack+courgette-gen+lzma
2918507 - bsdiff_sh_dif
2758942 - e8filt_v2+bsdiff_sh
2733034 - e8filt_v4+bsdiff_sh
2728477 - e8filt_v2j+bsdiff_sh
2720824 - bcj+bsdiff_sh_dif
2640251 - courgette-dis-gen+lzma
2608299 - bcj2+bsdiff_sh_dif
2566840 - dispack_dif
2516250 - courgette-gen+lzma
2497765 - dispack+courgette-gen+lzma
powerarc1150_vs_powerarc1162
Code:
3610965 - pa_1162_lzma
1756254 - e8+dispack+courgette-gen+lzma
1541960 - courgette-dis-gen+lzma
1239863 - dispack_dif
1231582 - bsdiff
1212591 - dispack+courgette-gen+lzma
1075800 - courgette-gen+lzma
1057060 - bcj2+bsdiff_sh_dif
1050062 - bsdiff_sh_dif
1031481 - e8filt_v2+bsdiff_sh
1030719 - e8filt_v2j+bsdiff_sh
1027606 - bcj+bsdiff_sh_dif
1000865 - e8filt_v4+bsdiff_sh
The kit used to collect these stats:
http://nishi.dreamhosters.com/u/exediff_0.rar
Maybe somebody would be able to find better lzma options
or get more ideas to test.
However, note that the priority is to improve the patch "quality",
not just to get a smaller patch archive - its known that eg. ccm
does better job than lzma here etc.