The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Порт библиотеки сжатия Zstd на JavaScript

21.01.2018 18:01

Опубликован JavaScript-порт библиотеки для сжатия данных с использованием алгоритма Zstd, обеспечивающего одно из лучших соотношений уровня сжатия к производительности. Порт сделан на основе оригинального кодека Zstandard, преобразованного в JavaScript при помощи компилятора Emscripten. Порт поддерживает использование словарей и может применяться в Node.js и в приложениях, выполняемых на стороне браузера.

  1. Главная ссылка к новости (https://github.com/yoshihitoh/...)
  2. OpenNews: Выпуск библиотеки сжатия LZHAM 1.0, нацеленной на создание более быстрой альтернативы LZMA
  3. OpenNews: Автор LZ4 представил новый быстрый и эффективный алгоритм сжатия ZSTD
  4. OpenNews: Dropbox опубликовал реализацию алгоритма сжатия изображений Lepton
  5. OpenNews: Facebook опубликовал реализацию алгоритма сжатия Zstandard 1.0
  6. OpenNews: Компания Google открыла код Draco, библиотеки для эффективного сжатия 3D-графики
Автор новости: Аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/47941-zstd
Ключевые слова: zstd, javascript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (31) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, фывфыв (?), 19:24, 21/01/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    > Порт библиотеки сжатия Zstd на JavaScript
    > пи помощи компилятора Emscripten

    Может уже хватит это портом называть? Тогда любую сборку программы можно назвать портом для arm, amd64, GNU/Linux и т.д. -_-

     
     
  • 2.2, Оболтус (?), 19:28, 21/01/2018 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Может уже хватит это портом называть?

    Ну если код потом обработали и привели в читаемый вид, то почему бы и нет?

     
     
  • 3.12, Xasd (ok), 21:22, 21/01/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Ну если код потом обработали и привели в читаемый вид, то почему бы и нет?

    кого привели в читаьельвый вид? бинарник?

     
     
  • 4.19, pavlinux (ok), 23:09, 21/01/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Где бинарник? https://github.com/yoshihitoh/zstd-codec/blob/develop/js/lib/zstd-codec.js
     
     
  • 5.23, irinat (ok), 01:15, 22/01/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://github.com/yoshihitoh/zstd-codec/blob/develop/js/lib/zstd-codec-bindin
     
     
  • 6.24, pavlinux (ok), 05:14, 22/01/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > https://github.com/yoshihitoh/zstd-codec/blob/develop/js/lib/zstd-codec-bindin

    Ещё раз: где бинарник?
    ...



    var Module = function(Module) {
      Module = Module || {};

    var Module;if(!Module)Module=typeof Module !== 'undefined' ? Module : {};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof
    require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_
    ....


     
     
  • 7.26, Аноним (-), 09:01, 22/01/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Ещё раз: где бинарник?

    У вебмакак и бинарники под стать:



    var ASM_CONSTS=[];STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+20192;__ATINIT__.push({func:(function(){__GLOBAL__sub_I_zstd_binding_cc()})},{func:(function(){__GLOBAL__sub_I_bind_cpp()})});memoryInitializer="data:application/octet-stream;base64,lB8AAIokAACUHwAAKyUAALwfAACdJAAAEAAAAAAAAACUHwAAbSUAALwfAACwJQAAEAAAAAAAAACUHwAANyYAALwfAABzJgAAEAAAAAAAAACUHwAA+CYAALwfAAAyJwAAEAAAAAAAAACUHwAAwicAALwfAAAHKAAAEAAAAAAAAACUHwAAkCgAALwfAADOKAAAEAAAAAAAAACUHwAAVSkAAJQfAAD7KQAAOCAAAM8pAAAAAAAAAQAAAKgAAAAAAAAAOCAAAKspAAAAAAAAAQAAALAAAAAAAAAAACAAACAqAAAAAAAAyAAAAAAgAABFKgAAAQAAAMgAAACUHwAAoyoAALwfAACNKgAAAAEAAAAAAAC8HwAAvSoAAGgDAAAAAAAAACAAANkqAAAAAAAACAEAAAAgAADwKgAAAQAAAAgBAACUHwAAICsAALwfAAAIKwAASAEAAAAAAAAAIAAAOisAAAAAAABQAQAAACAAAFMrAAABAAAAUAEAAJQfAABtKwAAACAAAHgrAAAAAAAAgAEAAAAgAACEKwAAAQAAAIABAACUHwAAoCsAAAAgAAC8KwAAAAAAAKgBAAAAIAAA2SsAAAEAAACoAQAAlB8AAPcrAAAAIAAAFSwAAAAAAADQAQAAACAAADQsAAABAAAA0AEAALwfAAB5LAAAIAIAAAAAAAAAIAAAVCwAAAAAAAAYAgAAHCAAAGcsAACUHwAAvywAALwfAAATLQAAUAIAAAAAAAAAIAAA7iwAAAAAAABIAgAAHCAAAAEtAACUHwAAWS0AALwfAACvLQAAgAIAAAAAAAAAIAAAiC0AAAAAAAB4AgAAHCAAAJwtAACUHwAA9i0AALwfAABNLgAAsAIAAAAAAAAAIAAAJi4AAAAAAACoAgAAHCAAADouAACUHwAAlC4AADggAAA+NAAAAAAAAAEAAABgAwAAAAAAADggAAD/MwAAAAAAAAEAAABgAwAAAAAAADggAACaMwAAAAAAAAEAAABgAwAAAAAAAJQfAAB7MwAAlB8AAFwzAACUHwAAPTMAAJQfAAAeMwAAlB8AAP8yAACUHwAA4DIAAJQfAADBMgAAlB8AAKIyAACUHwAAgzIAAJQfAABkMgAAlB8AAEUyAACUHwAAJjIAAJQfAADZMwAAlB8AAIo+AAC8HwAA6j4AAIADAAAAAAAAvB8AAJc+AACQAwAAAAAAAJQfAAC4PgAAvB8AAMU+AABwAwAAAAAAALwfAAD


    Все понятно, да? Не говоря о том что этот код весит 1.35 мегабайта, йо :)

     
     
  • 8.28, X4asd (ok), 13:18, 22/01/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    самый прикол ещё и в том что это лежит в РЕПОЗИТОРИИ ИСХОДНОГО КОДА ЛОЛ js-м... текст свёрнут, показать
     
  • 8.33, pavlinux (ok), 23:02, 22/01/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Амномном незнает что такое stream base64, Ты как опеннет попал, по рассылке в ... текст свёрнут, показать
     
  • 7.29, irinat (ok), 14:36, 22/01/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Ну вот тут, например code aA g,h,10 k qy 17994 124 0 n a g 11 0 124 0 i... большой текст свёрнут, показать
     
     
  • 8.34, pavlinux (ok), 23:05, 22/01/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Бедненькое поклонение копипастеров в расстройствах D Скажи спасибо, что не к... текст свёрнут, показать
     
  • 8.35, Stax (ok), 00:26, 23/01/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Я вот могу сказать, что вы никогда не открывали исходный код - заботливно написа... текст свёрнут, показать
     
     
  • 9.36, irinat (ok), 00:36, 23/01/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Некоторые открывал Но ещё я заглядывал в файлы, которые Emscripten генерирует ... текст свёрнут, показать
     
     
  • 10.37, Stax (ok), 20:54, 23/01/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да, я ошибся - сорри Массив MemoryInitialization чисто emscripten овская штука ... текст свёрнут, показать
     
  • 3.25, Аноним (-), 08:58, 22/01/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ну если код потом обработали и привели в читаемый вид, то почему бы и нет?

    После emscripten и минификации код не сильно отличается от hexspeak'а.

     
  • 2.3, Crazy Alex (ok), 20:01, 21/01/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Там таки не просто сборка. Там обычно некоторые правки, написание обвязки и т.п. В общем, именно портирование. Другое дело, что писали бы не "на javascript", а "на asm.js" - было бы понятнее
     

  • 1.5, Аноним (-), 20:04, 21/01/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –26 +/
    Отлично, JavaScript развивается. А хейтеры до сих пор "вспаменают" npm leftpad.
     
  • 1.6, Аноним (-), 20:07, 21/01/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    давно ждал, пока использовал lz4, но в нём нет словарей, сейчас буду переходить на zstd :)
     
     
  • 2.17, Led (ok), 22:52, 21/01/2018 [^] [^^] [^^^] [ответить]  
  • +/
    уже есть
     

  • 1.7, Аноним84701 (ok), 20:16, 21/01/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > JavaScript-порт библиотек ... обеспечивающего одно из лучших соотношений уровня сжатия к производительности
    > JavaScript-порт
    > производительности
    > JavaScript

    https://github.com/yoshihitoh/zstd-codec
    > TODO
    > performance test

    И как, соотношение просело всего в 2 раза? Или до 5-8 вообще "не считается!™" ?

     
     
  • 2.8, Аноним (-), 20:32, 21/01/2018 [^] [^^] [^^^] [ответить]  
  • –5 +/
    производительности тебе хватит чтобы сжимать данные на браузере и отправлять их по вебсокету на сервер, экономя тем самым трафик клиентов, а там уже как угодно, можешь на ноде обрабатывать, можешь на С сервер написать.
     
     
  • 3.11, ffirefox (?), 21:14, 21/01/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А батарейку при этом сильно кушает?

     
     
  • 4.13, Аноним (-), 21:27, 21/01/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    asmjs/webasm или SIMD.js ?
     
  • 4.22, Аноним (-), 00:14, 22/01/2018 [^] [^^] [^^^] [ответить]  
  • +7 +/
    А это проблема клиента, макак она не волнует.
     
  • 3.20, Аноним (-), 23:32, 21/01/2018 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Content-Encoding: gzip
     

  • 1.10, Аноним (-), 21:10, 21/01/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Зачем это, если JS толком ничего полезного не даст?
     
     
  • 2.14, Аноним (-), 21:37, 21/01/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Если на стороне клиента, то полезно для соединения через EDGE. А так все форматы медиа и документов уже ужатые.
     
     
  • 3.30, Аноним (-), 16:10, 22/01/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тем что быстрее батарею посадит?
     
  • 3.32, Аноним (-), 19:09, 22/01/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А браузер не пожмёт? (если только это не использовать для тех, которые не поддерживают).
    А вообще имхо, что этим можно жать/расжать какие-нибудь ресурсы, хранящиеся на стороне, игры например, или ещё чего. Можно в Electron засунуть, гагага.
     

  • 1.27, Аноним (-), 10:29, 22/01/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Предполагаю, скорость - адская.


     
  • 1.38, Аноним (38), 15:07, 02/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто пробовал?

    У обычного Zstandart много "Режимов". Часто много данных нужно передать с только от сервера к клиенту. Вот здесь есть [плохое] сравнение zstd и gzip: https://jothiprasath.com/blog/gzip-vs-zstd/

    Из сравнения видно, что zstd:3 всем лучше gzip, а zstd:19 сжимает ОЧЕНЬ медленно, но время распаковки не сильно отличается от gzip.
    Поэтому если передавать МНОГО данных (большое количество статики) Будет выгоднее. Меньше трафика (заметно) (+\- та же скорость распаковки (здесь я не верю в 7% (zstd) и 10% (gzip) нагрузки на цп)).

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру