PÀrast seitsme kuu arendustöö tehti vÀlja 0.2.0 raamistik OpenZL, mis on mÔeldud kaotusteta andmekompressorite loomiseks.
Raamistik koosneb pÔhikogumist ja tööriistadest spetsialiseeritud kompressorite loomiseks, mis on kirjeldatud keeles SDDL.
Hea spetsialiseeritud kompressori loomise protsess koosneb kahest etapist:
- Andmete analĂŒĂŒs struktuuri vĂ€ljatĂ”mbamiseks.
- Heade tagaplaanikompressorite kasutamine, mis kasutavad saadud struktuuri efektiivse tihenduse saavutamiseks.
OpenZL pakub tööriistu mÔlema etapi jaoks.
Projekt on kirjutatud keeltes C ja C++ ning jagatakse BSD litsentsi alusel.
Peamised muudatused
SDDL2
SDDL on tĂ€ielikult nullist ĂŒmber kirjutatud, et saavutada seadmaotsitud disainieesmĂ€rke. Kui algne demonstratsiooniversioon oli lihtsustatud tĂ€itmisvĂ”imekus, siis SDDL2 on tĂ€ieĂ”iguslik kompilaator: sĂŒntaksianalĂŒsaator edastab andmed semantilisele analĂŒsaatorile, kes omakorda saadab tĂŒĂŒbitud abstraktse sĂŒntaksipuu (AST) optimeerijale, ning optimeerija juhib koodigeneraatorit, mis genereerib virtuaalmasina byte-koodi.
Peamine tulemus on kohene sĂŒntaksianalĂŒĂŒs. Kui kirje asukoht on tĂ€ielikult mÀÀratletav ainult parameetrite ja konstantide kaudu, suundub mootor otse igale vĂ€ljal, skaneerimata eelnevaid baitide, mis tagab juurdepÀÀsu ilma kopeerimise ja GB/s ĂŒlekandekiirus.
Ise keel on arenenud koos tööriistade kogumiga. NĂŒĂŒd toetab see when-blokke tingimuslike asukohtade jaoks, parameetrilisi ja anonĂŒĂŒmseid kirjeid, kirjevĂ€ljade liikmete juurdepÀÀsu ning bititaseme ja loogilisi operaatorit.
Arendaja mugavuse osas tuvastab semantiline analĂŒĂŒsietapp nĂŒĂŒd ebamugavad viidatud, tĂŒĂŒbiteadete esinemise ja arususvead kompileerimise ajal â mĂ€rkides kohad algtekstis â mitte tĂ€itmise ajal, samuti on vĂ€lja antud VS Code'i laiendus .sddl failide sĂŒntaksihighlighteri jaoks.
Uus sisseehitatud LZ koodek
OpenZL sisaldab nĂŒĂŒd oma LZ-koodekit, mis on esitatud ZL_GRAPH_LZ kujul, samuti jĂ€rjestikuse kompressiooniprofiili utiliidis zli. Tööd koodeki kallal jĂ€tkuvad: tööriista funktsioonide komplekti laienemine ja jĂ”udluse tĂ”stmine vĂ€ikeste sisendandmete töötlemisel. Praegu toetab see funktsionaalsust, mis vastab zstd tasemele 1, kompressiooniruuduga 64 KB.
OpenZL vĂ”imaldab ĂŒmber kujundada iga LZ konveieri etapi kiirema töö tempos. Selle graafiline arhitektuur vĂ”imaldab ka ĂŒhte etappi entropiakoodimist kombineerida, selle asemel et kasutada ĂŒhtset konveierit, mis sobib igasuguste kasutusstsenaariumide jaoks. SeejĂ€rel saab mitu etappi ĂŒhendada ĂŒheks operatsiooniks, et tĂ”sta töötlemise kiirus. See vĂ”imaldab OpenZL-l saavutada 10% kiirema kompressioonikiiruse ja 70% kiirema dekompressioonikiiruse vĂ”rreldes Zstandard tasemega 1 Silesia korpusel. meie testides:
| Kompressor | Kompressioonisuhe | Kompressioonikiirus | Dekompresseerimise kiirus |
|---|---|---|---|
| OpenZL LZ tase 1 | 2.74 | 466 MB/s | 2288 MB/s |
| Zstd tase 1 64K akna suurusega | 2.74 | 419 MB/s | 1254 MB/s |
| Zstd tase 1 | 2.89 | 424 MB/s | 1345 MB/s |
Toetamine vÀga suurte sisendandmete jaoks
Zli toetab nĂŒĂŒd hiiglaslike sisendandmete (mitme gigabaidi suuruseid) töötlemist. Enne kompressiooni jagatakse sellised andmed nĂŒĂŒd automaatselt hallatava suurusega fragmentideks (vaikimisi umbes 16MB), mis aitab piirata mĂ€lu kasutamist, tĂ”sta andmete kohalolekut ja avab vĂ”imalused paralleelseks töötlemiseks. SDDL2-s on rakendatud sarnane automaatse fragmentimise funktsioon skeemi töötlemisel. Protsessi kĂ€igus loodi vĂ”i vĂ€rskendati uusi segmentaatoreid â CSV, Parquet ja tavaliste numbriliste andmete jaoks â ning kĂ”ik segmentaatoreid on nĂŒĂŒd serialiseeritavad ja kohandatavad, nii et valitud paigutus saab salvestada kompressorisse ja hiljem uuesti kasutada.
See rakendatakse kompressiooni kÀigus transparantselt. Pange tÀhele, et koolituskonveier on erinev ning jÀÀb muutumatuks, seega ei ole see mÔeldud hiiglaslike sisendandmete saamiseks koolitusmaterjalidena.
Parandused veebivisualiseerija graafikusproovi)
NĂŒĂŒd tuvastab visuaaliseerija kompressiooni ja dekompressiooni jĂ€lgi algusest lĂ”puni.
Voogesituspaneel vÔimaldab vaadata byte'e, mis tegelikult lÀbivad iga serva, ja lÔikamise juhtnupud hoiavad isegi suured vood töötlemisvÔimelisena.
Seadete paneel koondab kĂ”ik kuvamisvalikud ĂŒhte kohta ning tĂ€ielik kiirklahvide komplekt â suundade navigeerimine, jĂ€rjestikune lĂ€bimine, avamine ja kokkupanek, sĂ”lmede valimine â vĂ”imaldab tööriista mugavalt kasutada ilma hiireta.
NĂŒĂŒd on jĂ€lgimistest versioonid, plokkide jagamise tihendamine kuvatakse Ă”igesti ning zli suudab lĂ”puks genereerida oma jĂ€lgimised uute lippudega âtrace ja âtrace-streams-dir.
Muud
- Katalooge on lisatud mitu kodeerijat. Kodeerijad Partition ja bitpack kasutavad nĂŒĂŒd ĂŒhtset dekoodrit. Kodeerija Vote-point bitsplit omab spetsiaalseid kodeerijaid ja dekoodreid fp16, fp32, fp64 ja bf16 formaatidele koos spetsialiseeritud kiirendustega. On lisatud vahemiku arvestav jagamine (split_byrange), pikkuse multiplexer, kodeerija sentinel, graaf lz4 ja vĂ€iksed abifunktsioonid, nagu tryParseInt ja splitByParam.
- API on korrastatud.
- Fuzztestimise on parandatud.
- Kogumise ja pakendamise protsess on paranenud suurema arvu platvormide jaoks.
Allikas: linux.org.ru
