Постановка на проблема: Съществуващите инструменти за компресиране с общо предназначение като gzip, bzip2 и zstd са оптимизирани за големи файлове и пакетна обработка. Въпреки това, те са неефективни при използване върху малки текстови файлове (обикновено под 100 KB), където режийните разходи за компресиране – включително метаданни, заглавни полета и инициализация на речници – могат да надхвърлят спестеното пространство. Това води до слаби коефициенти на компресия, незначително намаление на размера или дори до по-големи изходни файлове. В много системи – като микросервизи, CLI помощни програми, вградени устройства или системи за контрол на версиите с много текстови файлове – съществува необходимост от ефективно съхранение и предаване на множество малки текстови файлове. Въпреки малкия им размер, тези файлове често са многобройни и съдържат повтарящи се шаблони, типични за структуриран или написан от човек текст. Настоящата дипломна работа има за цел да проектира и реализира лек, ориентиран към текст алгоритъм за компресиране, съобразен с малки текстови файлове, който постига по-добър баланс между коефициент на компресия, скорост и режийни разходи в сравнение с компресорите с общо предназначение.
Защо проблемът е от значение: Gzip добавя заглавна и крайна част (~40–60 байта). При конфигурационен файл от 2 KB, gzip може да го намали само със 300 байта – което не е съществено. Ако имате хиляди такива файлове (например логове, манифести, конфигурации), този допълнителен разход се натрупва. Вградени системи или контейнери може да срещнат затруднения със съхранението или мрежовата пропускливост.
Моето реение: Компресор с минимален допълнителен разход, настроен за откриване на повторения в кратък текст. Оптимизиране на размера на речника, обработката на блокове и метаданните. Възможност за компресиране на множество малки файлове наведнъж. Проектиран с малки буфери и линейни времеви ограничения.
История на компресиране: Не
Идея за формат на компресия: .srr
Да декомпресира WinRAR & 7Zip: В зависимост от файловото разширение ще използва различен метод за декомпресиране. .zip → zlib/libzip .7z → 7-Zip SDK .tar.gz → libarchive .rar → unrar
Добавяне на парола: Да
Тредове при компилация: Потребителя няма да има правото да променя броя на нишките преди и/или по време на компилация, понеже булшинството от хората не знаят какво е това
Свободен избор на ядря: Води до спад на компресивната мощ, което води до забавяне на времето за компресия
Избор между ядра и графична карта: При наличие на графияна карта, автоматична ще се използва нея. В протичен случей (максимален брой ядра - 2)
Ниво на компресия: Само едно. Константно
Спиране на процеса на компресия: Не. Времето за реакция на човек варира от 200 до 250 стотни. За това време файловете вече ще бъдат компресирани.