OpenZL 0.2.0 OpenZL 0.2.0

Жеті айлық әзірлеуден кейін фреймворктің 0.2.0 нұсқасы шығарылды. OpenZL, шығынсыз деректер компрессорларын жасауға арналған.

Құрылым негізгі кітапханадан және тілде сипатталған мамандандырылған компрессорларды жасауға арналған құралдардан тұрады. SDDL.
Жақсы арнайы компрессорды жасаудың екі қадамы бар:

  1. Құрылымды алу үшін деректерді талдау.
  2. Жақсы сығымдауға қол жеткізу үшін алынған құрылымды пайдаланатын жақсы артқы компрессорларды пайдалану.

OpenZL екі кезеңге де арналған құралдарды ұсынады.

Жоба C және C++ тілдерінде жазылған және BSD лицензиясы бойынша таратылады.

Негізгі өзгерістер

SDDL2

SDDL бастапқы дизайн мақсаттарына жету үшін толығымен нөлден бастап қайта жазылды. Бастапқы демо жеңілдетілген жұмыс уақыты ортасы болса, SDDL2 толыққанды компилятор болып табылады: парсер деректерді семантикалық анализаторға жібереді, ол өз кезегінде терілген абстрактілі синтаксис ағашын (AST) оңтайландырғышқа жібереді, ал оңтайландырғыш виртуалды машинаның байткодын жасайтын код генераторын басқарады.

Негізгі нәтиже - лезде талдау. Жазбаның орнын тек параметрлер мен тұрақтыларды пайдаланып толық анықтауға болатын кезде, қозғалтқыш алдыңғы байттарды сканерлемей кез келген өріске тікелей секіреді, бұл көшірмесіз кіруді және бірнеше ГБ/с өткізу қабілетін қамтамасыз етеді.

Тілдің өзі құралдар жиынтығымен бірге дамыды. Қазір ол шартты операторларға арналған when сөйлемдерін, параметрленген және анонимді жазбаларды, жазба өрісінің мүшелеріне қол жеткізуді және биттік және логикалық операторларды қолдайды.

Әзірлеуші ​​​​тарапында, семантикалық талдау қадамы енді анықталмаған сілтемелерді, тип сәйкессіздіктерін және аритмиялық қателерді орындалу уақытында емес, компиляция уақытында - бастапқы кодтың орналасқан жерімен - анықтайды және .sddl файлдарының синтаксисін ерекшелеуге арналған VS Code кеңейтімі шығарылды.

Жаңа кіріктірілген LZ кодегі

OpenZL енді ZL_GRAPH_LZ ретінде көрсетілген өзінің LZ кодегін, сондай-ақ zli утилитасындағы тізбекті сығымдау профилін қамтиды. Кодекпен жұмыс жалғасуда, оның функциялар жиынтығын кеңейтуде және шағын кіріс деректерін өңдеу кезінде өнімділікті жақсартуда. Қазіргі уақытта ол 64 КБ сығымдау терезесімен zstd 1 деңгейіне баламалы функционалдылықты қолдайды.

OpenZL LZ құбырының әрбір кезеңін жылдамдық үшін қайта жобалауға мүмкіндік береді. Оның графикалық архитектурасы барлық пайдалану жағдайларына бірдей сәйкес келетін бір құбырды пайдаланудың орнына энтропияны кодтау кезеңдерін біріктіруге мүмкіндік береді. Содан кейін өңдеу жылдамдығын жақсарту үшін бірнеше кезеңдерді бір операцияға біріктіруге болады. Бұл OpenZL-ге Silesia корпусындағы Zstandard 1-деңгейімен салыстырғанда 10% жылдамырақ сығуға және 70% жылдамырақ декомпрессияға қол жеткізуге мүмкіндік береді. біздің сынақтарымыз:

КомпрессорСығымдау қатынасыСығымдау жылдамдығыДекомпрессия жылдамдығы
OpenZL LZ 1-деңгейі2.74466 Мб / с2288 Мб / с
64K терезе өлшемімен Zstd 1-деңгейі2.74419 Мб / с1254 Мб / с
Zstd 1-деңгейі2.89424 Мб / с1345 Мб / с

Өте үлкен кіріс деректерін қолдау

zli енді үлкен кіріс деректерін (бірнеше гигабайт өлшемді) өңдеуді қолдайды. Сығымдау алдында мұндай деректер енді автоматты түрде басқарылатын өлшемді бөліктерге бөлінеді (әдепкі бойынша шамамен 16 МБ), бұл жадты пайдалануды шектейді, деректердің орналасуын жақсартады және параллель өңдеуді қамтамасыз етеді. SDDL2 схемамен жұмыс істеген кезде ұқсас автоматты түрде бөліктеу мүмкіндігін жүзеге асырады. Процесс барысында CSV, паркет және стандартты сандық деректер үшін жаңа сегментаторлар жасалды немесе жаңартылды, және барлық сегментаторлар енді серияланатын және конфигурацияланатын, сондықтан таңдалған орналасуды компрессорда сақтауға және кейінірек қайта пайдалануға болады.

Бұл қысу кезінде мөлдір түрде қолданылады. Оқыту құбыры басқаша екенін және өзгеріссіз қалатынын ескеріңіз, сондықтан ол оқу материалы ретінде үлкен кіріс деректерін қабылдауға арналмаған.

Онлайн графикалық визуализатордағы жақсартулар (сынап көріңіз)
Визуализатор енді қысу және декомпрессия іздерін басынан аяғына дейін таниды.

Ағынды алдын ала қарау панелі әрбір жиек бойымен байттардың қалай ағып жатқанын көруге мүмкіндік береді, ал кесу басқару элементтері тіпті үлкен ағындармен жұмыс істеуді жеңілдетеді.

Параметрлер панелі барлық дисплей опцияларын бір жерде біріктіреді, ал жылдам пернелердің толық жиынтығы — бағыттау шарлауы, реттелген шарлау, кеңейту және жию және түйінді таңдау — құралмен тінтуірсіз ыңғайлы жұмыс істеуге мүмкіндік береді.

Енді іздерді іздеу нұсқалары өзгертілді, блок негізіндегі қысу дұрыс көрсетіледі және zli ақырында жаңа --trace және --trace-streams-dir жалаушаларын пайдаланып өзінің іздерін жасай алады.

Разное

  • Каталогқа бірнеше кодектер қосылды. Бөлім және бит пакеті кодектері енді біріктірілген декодерді пайдаланады. Қалқымалы нүктелі битбөлінді кодектер енді мамандандырылған үдеумен fp16, fp32, fp64 және bf16 форматтары үшін арнайы кодтаушылар мен декодерлерді қамтиды. Диапазонға бейімделген бөлу (split_byrange), ұзындық мультиплексоры, сентинел кодегі, lz4 графы және tryParseInt және splitByParam сияқты кішігірім көмекші функциялар қосылды.
  • API жетілдірілді.
  • Жақсартылған fuzz тестілеуі.
  • Көптеген платформалар үшін құрастыру және орау процесі жақсартылды.

Ақпарат көзі: linux.org.ru