Jaki typ kompresji wybrać ?

0

Mam listę bardzo małych plików(do 100 kb) , razem ważą około 5 giga. Zamierzam więc je skompresować i trzymać w pamięci,ponieważ mój program często z nich korzysta. Pytanie do was , jaki typ kompresji wybrać skoro będę bardzo często potrzebował dostępu do nich w powiedzmy losowy sposób ? A jednocześnie zależy mi na jak największej kompresji. Piszę to w c#.

0

Jeśli te pliki są małe to ja bym mimo wszystko zwyczajnie używał RAMu do i przechowania. Chyba, że twój program w pewnym momencie staje się ograniczony przez szybkość pamięci (w co wątpię) i wtedy najlepiej było by użyć jakiegoś algorytmu zoptymalizowanego w kierunku dekompresji, np. Brotli lub Zopfli.

0

To może jeszcze jedno pytanie , bo te dane wielokrotnie się powtarzają , czasem w całości czasem w części. Czy ktoś wie jaki jest najlepszy sposób kompresji tego typu danych? na razie używałem gzipstream który używa LZ77 , ale jeśli mam dwa identyczne pliki to mi i tak tego nie wykrywa :-/ .

0

To może licz hasze przy wczytywaniu tych plików i jak hasz się powtórzy to nie wczytuj pliku 2 raz.

0

To faktycznie dobry pomysł, ale co zrobić z plikami które tylko w części mają takie same dane ?

0

Delta comparision. Dzielisz pliki na części, liczysz hashe, wysyłasz listę z czego składają się pliki oraz unikalne delty a następnie składasz wszystko do kupy. Słowem, robisz to co robi rsync.

0

Możesz cześć wspólne możesz odnaleźć, zapisać do osobnego pliku, a w ich miejsce wstawić jakieś znak gdzie są do wczytania. Tylko trzeba było by pilnować by nie powstał burdel.

0

Dzięki to wszystko będzie w takim razie.

0

Spróbuj https://github.com/Cyan4973/zstd Ma "training mode" do tworzenia wspólnego słownika. Nie wiem czy przy twoich (dużych) rozmiarach danych ten tryb zadziała, ale możesz spróbować.

0
Złoty Młot napisał(a):

http://www.benchmark.pl/testy_i_recenzje/najlepsze-darmowe-programy-do-kompresowania-plikow.html

Mistrzu czytania ze zrozumieniem - gdzie w tym artykule jest test kompresji wielu małych podobnych plików do których trzeba mieć szybki losowy dostęp?

0

Weź wrzuć to do jakiejś ludzkiej bazy danych a nie w pliczkach, a jest szansa że będzie działać wydajniej niż cokolwiek wymyślisz z kompresją.

1 użytkowników online, w tym zalogowanych: 0, gości: 1