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)
Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от tailgunner

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

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

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

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

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

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

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

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

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

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

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

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

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