LINUX.ORG.RU
ФорумTalks

JS vs C - скорость deflate. Эпизод 2.

 , , ,


2

2

Запилили deflate в порте zlib на javascript. Разница по скорости ВСЕГО В ПОЛТОРА РАЗА.

node v0.10, 10mb sample:

   deflate-gildas x 2.82 ops/sec ±1.21% (11 runs sampled)
   deflate-imaya x 2.25 ops/sec ±0.59% (9 runs sampled)
 ! deflate-pako x 6.09 ops/sec ±0.98% (19 runs sampled)
   deflate-zlib x 9.13 ops/sec ±0.92% (46 runs sampled)

node v0.11, 10mb sample:

   deflate-gildas x 3.39 ops/sec ±6.58% (12 runs sampled)
   deflate-imaya x 2.14 ops/sec ±4.29% (9 runs sampled)
 ! deflate-pako x 6.61 ops/sec ±0.66% (20 runs sampled)
   deflate-zlib x 9.28 ops/sec ±1.98% (47 runs sampled)

И это еще код до конца не вычищен. Кто не верит - может запустить бенчмарк самостоятельно. Уровень компрессии там подкручивается. Бенчи гонялись для level 6. Если поставить level 0 (store), то скорость подскочит до 50 мб.сек. Это можно считать подтверждением, что нет явных просадок на пробросе данных из zlib и проц действительно тратится именно на вычисления. Гонял на 2 версиях ноды, потому что там v8 заметно отличиается.

https://github.com/nodeca/pako

Жду историй успеха про быстрый руби, быстрый питон, и т.п. :)

★★★★★

Последнее исправление: Vit (всего исправлений: 1)

Разница по скорости ВСЕГО В ПОЛТОРА РАЗА

Убивать! Долго и мучительно.

Бенчи гонялись для level 6.

In terms of the deflate performance changes for Zlib with these patches, Jim noted that for an Intel Core i5 2530M (Sandy Bridge) system, level one compression is 71% faster with a sacrifice of about 30% compression, level 6 is about 50% faster with no real change in compression, and level 9 is about 22% faster with no change at all in the compression.

Это из комментов к нативному zlib.

devl547 ★★★★★
()
Последнее исправление: devl547 (всего исправлений: 2)
Ответ на: комментарий от tailgunner

Весь вопрос в том, насколько именно эфективный. Раньше было принято считать, что JS сливает сям в 10 раз. Потом - что в 5. Ну и вот я вижу, что не более полутора.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Почти наверняка старая версия. zlib 1.2.9 еще не выпустили.
Собрал только что с патчами - скорость действительно подросла роцентов на 15-20 (на i5-430m тестировал с 40-метровым выводом urandom)

devl547 ★★★★★
()
Ответ на: комментарий от Vit

Весь вопрос в том, насколько именно эфективный

Не, настоящий вопрос - «для какого кода». Как говорится, «compilers are giant pattern-matching machines» - пока ты пишешь известными им паттернами, всё круто, а когда отклоняешься - всё не настолько круто. Ну и паттерны у разных JIT могут быть разными - например, как ваш быстрый V8-код работает на IonMonkey (или какая там Monkey в современной Mozilla)?

tailgunner ★★★★★
()

Так вам давно говорили, что будущее за javascript/v8, а вы всё php php. :-) Lua, кстати, тоже «рвёт» на JIT.

menangen ★★★★★
()
Ответ на: комментарий от tailgunner

Настоящий вопрос - это «нужно ли в серверном проекте сразу делать модули на сях, если нужна скорость». Ответ - скорее всего не нужно.

Про мозиллу не знаю. У них нет удобных инструментов, чтобы на сервере код гонять. А проверять из принципа - время жалко. v8 оптимизирует без asm.js, код можете посмотреть.

Паттерн простой - держать критичные функции и переменные мономорфными. Дык на сях будет то же самое, только вообще по всему коду.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

У них нет удобных инструментов, чтобы на сервере код гонять.

Ага.. досадно что довольно мощная вм не используется в полной мере.

special-k ★★★★
()

Олсо, забавно, что всякие knockout демонстрируют столь слабую производительность.

special-k ★★★★
()

Ждем dart,который в полтора раза быстрее js

GanGSISoft ★★
()

Нужно ещё сравнение с программой на C, на том же железе. А то есть мнение, что это у них не JS такой быстрый, а маршалинг во внешние либы такой тормозной...

atrus ★★★★★
()
Ответ на: комментарий от atrus

На level0 скорость подскакивает в 7 раз. С кривым маршалингом такого бы не было.

Vit ★★★★★
() автор топика

ВСЕГО В ПОЛТОРА РАЗА

Ну ни фига себе. И кому после этого этот жабоскриптик нужен? Я бы понял ещё 5-10%, но ПОЛТОРА РАЗА???

gnu-eabi
()

Кому вообще нужно это сжатие, интернеты уже достаточно быстрые, а харды и RAM достаточно большие, чтобы не сжимать данные.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

Например для генерации WOFF в браузере. Например для открытия ZIP в браузере.

Вброс не засчитан.

Vit ★★★★★
() автор топика
Ответ на: комментарий от devl547

Фишка в том, что последний v8 на новых процах тоже быстрее. Ну и я код еще не до конца дочистил. Плюс бенчмарк не очень точный. В общем, 20% - не та разница, которую сейчас есть смысл обсуждать.

В течении пары недель закончим, и сможете более точно померять, если будет желание и время. Сейчас мне просто влом для измерений искать нормальную тачку, закрывать постороние программы и т.п. У меня старый мак-мини со старым c2d. Пускаю на нем бенчмарк как есть. Разницу в полтора раза там видно, а точнее мне пока не надо.

Vit ★★★★★
() автор топика
Ответ на: комментарий от devl547

Я сравниваю то что есть, и пишу те цифры, за которые могу отвечать.

Если есть желание ковырять до процентов - сорцы вложены. Прогоните нормально бенчмарки, покажите результаты, и обсудим. В терминах «я тут поконпелял и запустил» мне не интересно.

Vit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.