FunguaZL 0.2.0

FunguaZL 0.2.0 FunguaZL 0.2.0

Baada ya miezi saba ya uundaji, toleo la 0.2.0 la mfumo lilitolewa. FunguaZL, iliyoundwa ili kuunda vikandamiza data visivyo na hasara.

Mfumo huu una maktaba ya msingi na zana za kuunda vigandamizi maalum vilivyoelezwa katika lugha hiyo. SDDL.
Kuna hatua mbili za kuunda kijazio kizuri maalum:

  1. Uchambuzi wa data ili kutoa muundo.
  2. Kutumia vikandamizaji vizuri vya nyuma vinavyotumia muundo unaotokana ili kufikia mgandamizo mzuri.

OpenZL hutoa zana kwa hatua zote mbili.

Mradi umeandikwa kwa C na C++ na unasambazwa chini ya leseni ya BSD.

Mabadiliko makubwa

SDDL2

SDDL iliandikwa upya kabisa kuanzia mwanzo hadi mwisho ili kufikia malengo yake ya awali ya muundo. Ingawa onyesho la awali lilikuwa mazingira rahisi ya muda wa utekelezaji, SDDL2 ni mkusanyiko kamili: kichanganuzi hupitisha data kwa kichanganuzi cha kisemantiki, ambacho hupitisha mti wa sintaksia dhahania (AST) kwa kiboreshaji, na kiboreshaji hudhibiti jenereta ya msimbo, ambayo hutoa msimbo pepe wa bytecode.

Matokeo muhimu ni uchanganuzi wa papo hapo. Wakati eneo la rekodi linaweza kuamuliwa kikamilifu kwa kutumia vigezo na vigezo pekee, injini huruka moja kwa moja kwenye sehemu yoyote bila kuchanganua baiti zilizopita, kuwezesha ufikiaji usio na nakala na upitishaji wa GB/s kadhaa.

Lugha yenyewe imebadilika sambamba na seti ya vifaa vyake. Sasa inaunga mkono vifungu vya wakati kwa kauli zenye masharti, rekodi zilizo na vigezo na zisizojulikana, ufikiaji wa washiriki wa sehemu ya rekodi, na waendeshaji wa bitwise na mantiki.

Kwa upande wa msanidi programu, hatua ya uchanganuzi wa kisemantiki sasa inatambua marejeleo yasiyofafanuliwa, kutolingana kwa aina, na makosa ya uadilifu wakati wa kukusanya—pamoja na eneo la msimbo chanzo—badala ya wakati wa utekelezaji, na kiendelezi cha Msimbo wa VS kwa ajili ya kuangazia sintaksia ya faili za .sddl kimetolewa.

Kodeki mpya ya LZ iliyojengewa ndani

OpenZL sasa inajumuisha kodeki yake ya LZ, inayowakilishwa kama ZL_GRAPH_LZ, pamoja na wasifu wa mgandamizo unaofuatana katika huduma ya zli. Kazi kwenye kodeki inaendelea, ikipanua seti yake ya vipengele na kuboresha utendaji wakati wa kuchakata data ndogo ya kuingiza. Kwa sasa, inasaidia utendaji sawa na kiwango cha 1 cha zstd, ikiwa na dirisha la mgandamizo la 64 KB.

OpenZL inaruhusu kila hatua ya bomba la LZ kubadilishwa kwa kasi. Usanifu wake wa grafu pia huruhusu kuchanganya hatua za usimbaji wa entropy, badala ya kutumia bomba moja ambalo linafaa kwa matumizi yote. Hatua nyingi zinaweza kuunganishwa katika operesheni moja ili kuboresha kasi ya usindikaji. Hii inaruhusu OpenZL kufikia mgandamizo wa 10% wa haraka na utenganishaji wa 70% wa haraka ikilinganishwa na kiwango cha 1 cha Zstandard kwenye corpus ya Silesia. majaribio yetu:

CompressorUlinganifu wa urafikiKasi ya UkandamizajiKasi ya Kupunguza Mgandamizo
Kiwango cha 1 cha OpenZL LZ2.74466 MB / s2288 MB / s
Kiwango cha 1 cha Zstd chenye ukubwa wa dirisha la 64K2.74419 MB / s1254 MB / s
Kiwango cha 1 cha Zstd2.89424 MB / s1345 MB / s

Usaidizi kwa data kubwa sana ya kuingiza data

zli sasa inasaidia usindikaji wa data kubwa ya ingizo (ukubwa wa gigabaiti kadhaa). Kabla ya kubanwa, data kama hiyo sasa imegawanywa kiotomatiki katika vipande vya ukubwa unaoweza kudhibitiwa (takriban MB 16 kwa chaguo-msingi), ikipunguza matumizi ya kumbukumbu, kuboresha eneo la data, na kuwezesha usindikaji sambamba. SDDL2 hutekeleza kipengele sawa cha kukata kiotomatiki wakati wa kufanya kazi na schema. Vigawanyaji vipya viliundwa au kusasishwa katika mchakato huo—kwa CSV, Parquet, na data ya kawaida ya nambari—na vigawanyaji vyote sasa vinaweza kusawazishwa na kusanidiwa, kwa hivyo mpangilio uliochaguliwa unaweza kuhifadhiwa kwenye kigandamizaji na kutumika tena baadaye.

Hii inatumika kwa uwazi wakati wa kubanwa. Kumbuka kwamba njia ya mafunzo ni tofauti na haiathiriwi, kwa hivyo haijaundwa kukubali data kubwa ya ingizo kama nyenzo ya mafunzo.

Maboresho katika kionyeshi cha grafu mtandaoni (kujaribu)
Kitazamaji sasa kinatambua athari za mgandamizo na upunguzaji wa mgandamizo kuanzia mwanzo hadi mwisho.

Paneli ya hakikisho la mtiririko hukuruhusu kuona baiti zikipita kwenye kila ukingo, na vidhibiti vya kupunguza huweka hata mitiririko mikubwa kuwa rahisi kufanya kazi nayo.

Paneli ya mipangilio huleta pamoja chaguo zote za onyesho katika sehemu moja, na seti kamili ya vitufe vya moto—usogezaji wa mwelekeo, upitishaji uliopangwa, kupanuka na kuanguka, na uteuzi wa nodi—hukuruhusu kufanya kazi kwa urahisi na kifaa bila kipanya.

Vidokezo sasa vimebadilishwa, mgandamizo unaotegemea vizuizi unaonyeshwa kwa usahihi, na zli hatimaye inaweza kutoa vidokezo vyake kwa kutumia bendera mpya za --trace na --trace-streams-dir.

Miscellanea

  • Kodeki kadhaa zimeongezwa kwenye orodha. Kodeki za Kizigeu na bitpack sasa zinatumia kipokodi kilichounganishwa. Kodeki ya bitsplit ya sehemu inayoelea sasa inajumuisha vipokodi na vipokodi maalum vya umbizo la fp16, fp32, fp64, na bf16 vyenye uongezaji kasi maalum. Mgawanyiko unaozingatia masafa (split_byrange), kizidishi cha urefu, kodeki ya sentinel, grafu ya lz4, na vitendakazi vidogo vya usaidizi kama vile tryParseInt na splitByParam vimeongezwa.
  • API imeboreshwa.
  • Upimaji wa fuzz ulioboreshwa.
  • Mchakato ulioboreshwa wa ujenzi na ufungashaji kwa ajili ya mifumo zaidi.

Chanzo: linux.org.ru