Pack projektas bandė sukurti failų archyvavimo formatą, pagrįstą SQLite biblioteka ir ZSTD (Zstandard) glaudinimo algoritmu. Parengtas prototipas, parašytas Pascal ir platinamas pagal Apache 2.0 licenciją, archyvų kūrimo greičiu pranoko įprastus archyvuotojus, nepaisant to, kad jo darbas apsiribojo duomenų nuskaitymu, suspaudimu su libzstd biblioteka ir SQL operacijų atlikimu. pridėti suglaudintus duomenis į failą su duomenų baze SQLite.
Suglaudinus katalogą su 81 tūkst. failų, kurių bendras dydis 1.25 GB, paketas buvo 112 kartų greitesnis nei ZIP įrankis, operaciją užbaigdamas per 1.3 sekundės, palyginti su 146 sekundėmis ZIP. Paketo archyvo dydis buvo 23 % mažesnis (194 MB paketui ir 253 MB ZIP). Palyginimui, tar programa užbaigė supakavimą per 4.7 sekundės be suspaudimo ir per 28.5 sekundės su gzip suglaudinimu, RAR archyvatorius testą užbaigė per 27.5 sekundės, o 7z – per 54.2 sekundės. Archyvo dydžiai buvo: tar.gz - 214 MB, RAR - 235 MB, 7z - 135 MB. Pažymima, kad pagal išpakavimo greitį ir atsitiktinę prieigą prie failų „Pack“ taip pat lenkia kitus archyvuotojus, tuo pačiu sunaudoja mažiau RAM. ZIP: 253 MB, 146 s 7z: 135 MB, 54.2 s greitesnis ZIP 2.7 karto tar.gz: 214 MB, 28.5 x 5.1 RAR: 235 MB, 27.5 sx 5.3 tar: 1345 MB, 4.7 MB x ., 31 MBs. SX 194
Apie failo talpyklos poveikį bandymo rezultatams neužsimenama. Tikriausiai mažas ZIP greitis yra susijęs su testų paleidimo eiliškumu, neatsižvelgiant į duomenų kaupimą atmintyje - testas su zip buvo paleistas su šalta talpykla, o likusieji testai su šilta talpykla. Įprastomis sąlygomis „Zstandard“ suspaudimo greitis yra 3–5 kartus didesnis nei „zlib“ ir 10 kartus greitesnis dekompresija, o glaudinimo lygis yra 15–XNUMX % didesnis.
Papildymas: Panaši idėja saugoti suglaudintus failus blobų pavidalu SQLite duomenų bazėje buvo įgyvendinta 2014 m. sqlar archyvavimo priemonėje, kurią SQLite kūrėjai sukūrė kaip eksperimentą, skirtą įvertinti blobų saugojimo SQLite efektyvumą. sqlar suspaudimui naudoja zlib, o failo dydis yra maždaug 2% didesnis nei ZIP įrankis.
Šaltinis: opennet.ru
