LINUX.ORG.RU

Java vs node.js vs non-block

 , ,


1

4

Наткнулся тут, в общем, на интересную статью.

Там чувак доносит мысль, что разницы между блокирующим и неблокирующим вообще нет. И да, джавка сливает ноде :)

P.S. статья на англицком. Кто в него не умеет -> бегом учить.

Я так думаю, что при многопоточном программировании блокирующие функции эффективнее, да и логика программы проще. А смысла вызывать не блокирующие функции вообще не вижу (я сейчас не о яве, а вообще).

aureliano15 ()

джавка сливает ноде

Только в манямирке мамкиных строителей апи у которых бизнес-логики никакой.

ritsufag ★★★★★ ()

«Я побенчмаркал какую-то херню и сделал выводы». Статья уровня школьного реферата по ОБЖ

vertexua ★★★☆☆ ()

Если ты можешь себе позволить на отдачу статического файла 4000 тредов, то действительно, блокирующие вызовы не так уж и страшны
Если вдруг ты не в курсе, то на каждый тред в jdk 8 запущеной на linux/x86_64 по умолчанию тратится мегабайт стека, т.е. 4 гигабайта памяти были потрачены даже без создания хотя бы одного объекта.
И люди потом говорят что джава много памяти жрет.

maloi ★★★★★ ()

И да, товарищ не смог написать non-blocking код на джаве.

maloi ★★★★★ ()

Для одного файла это эквивалентно к тому, что оно из памяти отдает, никакого ввода-вывода фактически и не будет, такие тесты не нужны, как и те кто их пишут.

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

Если вдруг ты не в курсе, то на каждый тред в jdk 8 запущеной на linux/x86_64 по умолчанию тратится мегабайт стека, т.е. 4 гигабайта памяти были потрачены даже без создания хотя бы одного объекта.

Память выделяется постранично. Даже если джава попросила мегабайт на стек, физическая память выделится только по мере её использования. Если стек небольшой (а у джавы на стеке обычно толком ничего и нет), то никакого мегабайта не будет потрачено.

Legioner ★★★★★ ()

Круто!

Когда понадобится написать высокопроизводительный хэллоуворлд, обязательно буду испольщовать node.js.

anatoly ()
Ответ на: комментарий от Legioner

Я так понимаю, это будет работать только если overcommit включен (по умолчанию включен, но всё же).

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

Может быть. А какие могут быть причины не включать его на сервере?

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

Чтоб злобный OOM-killer не пришел и не убил кого не надо)

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

с одной стороны так, с другой -

Senior Java developer, one of the top stackoverflow users, fluent with Java and Java technology stacks - Spring, JPA, JavaEE. Creator of http://computoser.com . Worked on Ericsson projects, Bulgarian e-government projects, large scale recruitment platforms, cloud navigation synchornization. Member of the jury of the International Olympiad in Linguistics and the Program committee of the North American Computational Linguistics Olympiad.

stevejobs ★★★☆☆ ()

А ограничения на кол-во тредов в жабе разве нет?

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

4908 Тредов - 5008 нативных. Съели 2 гб памяти. новый тред соответсвенно выбивает процесс по OutOfMemorry.

То есть, там еще нативные потоки как-то завязаны, чем больше потоков жабы, тем больше потоков оси. Короче — говно.

anonymous ()
Ответ на: комментарий от stevejobs

Ну достижения не предохраняют от написания одной дебильной статьи

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

Достижения то более чем сомнительные

stackoverflow users, fluent with Java and Java technology stacks

То есть, быть юзером какого то форума и ынтырпрайзным быдлом — это достижения?

anonymous ()
Ответ на: комментарий от asaw

Чтоб злобный OOM-killer не пришел и не убил кого не надо)

Для этого надо программы настраивать нормально. В любой серверной программе выставляются лимиты на использование памяти. Грубо говоря у тебя на сервере 16 гигабайтов памяти — жаве ставишь 6 гигов, постгресу ставишь 4 гига на всякую муть и 6 гигов остаётся на файловые кеши. И никакой оом киллер не придёт никогда.

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

Если стек небольшой

ты видел реальные стектрейсы из реальных проектов? твое предположение разбивается о суровую практику фреймворков, которые делают обертку над оберткой и обертками погоняют.

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

Ну вложенность больше 100 я не видел, например. Если каждый фрейм это 128 байтов, то вложенность в 100 уровней это 12.8 килобайтов. Совсем не мегабайт. Это раз.

Стектрейс из реальных проектов обычно в нескольких основных потоках работает. А тысячи других потоков скорее всего будут очень простыми с 1-3 уровнями вложенности. Это два.

Legioner ★★★★★ ()

И да, джавка сливает ноде

Толсто. Всем и так очевидно, что нода асинхронная потому что авторы не осилили запилить многопоточность, а не потому что так лучше.

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

Возможно, они и не осилили, но это не отменяет того факта, что нода отрабатывает быстрее и с меньшим количеством ошибок.

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

Худей, тот чел может и не троль, возможно он просто не специалист или клинический рукожоп, хотя я в этом сомневаюсь. Но ты то сюда точно за едой пришёл, так что худей.

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

Ну, конечно, известный многим разработчик написал бенч, который задел джавского кодерка, который не может признать, что время его поделия ушло. Ты же, конечно же, бэтмэн с лора лучше напишешь. Уж в этом мало кто сомневается.

lazy_aleks ()

Ну, а теперь пусть этом «Божий Дар» пойдет в City Group или Deutsche Bank и малька повеселит там народ своими тестами.

Особенно, на собеседовании. :)))

Bioreactor ★★★★★ ()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от lazy_aleks

meaningless

Читайте по ссылке ВИ-НИ-МА-ТЕЛЬ-НО -


Serge Bureau replied on Sat, 2015/04/18 - 9:24am

Is it intended as a joke ?

Non blocking provides no benefit for single file call, it is when you have many that it does.

Your benchmark is meaningless, so please do not reach conclusion from it ???

В ответ - софистика и слив.

http://demotivators.to/media/posters/3532/96482_skazhi-net-primitivnomu-troll...

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

Ну, конечно, известный многим разработчик

А Уве Бол известный многим режиссер.

Ты же, конечно же, бэтмэн с лора лучше напишешь

Я не собираюсь ничего писать, т.к. в этом нет смысла.

Но поскольку аудитория сайта включает не только тролей и людей опытных, то я немного посчитаю: 120000/30=4000 внезапно число потоков на сервере, т.е. отдавай сервак по запросу на поток в секунду - всё замечательно. А теперь зайди на лоре в любую тему на несколько страниц, включи инспектор, кликни показать удалённые и посмотри как те же 40кб только не поднятые из файлика а динамически сформированные прилетают за 500-900мс (поскольку и 20 и 30 кб прилетают за то же время то очевидно дело не скорости рендеринга в хтмл).

Поскольку чел явно не в курсе что такое NIO, на что ему прозрачно намекнули, то я говорил исключительно о результатах которые он для IO получил.

ПС: мне как-то не приходилось иметь дело с нагрузкой для статики (для этого перед томкатом обычно ставят апачи и т.п.), но по прикидке на 4к потоках 120к запросов суммарно можно отработать секунд за 20, если конечно не поднимать более 10к-15к запросов/сек.

ya-betmen ★★★★★ ()
Ответ на: meaningless от Bioreactor

Re: meaningless

жабабыдло раскудахталость, как всегда.

anonymous ()
Ответ на: комментарий от ya-betmen

Че, обидно, когда жабаразработчиками жопу подтирают?

anonymous ()

КГ/АМ. Раздавать статический контент это вообще не бенчмарк.

anonymous ()
Ответ на: комментарий от asaw

Я так понимаю

Я тебя огорчу, но нихрена ты не понимаешь.

это будет работать только

Эти куллстори, эти куллстори.

только если overcommit включен

Яб тебе всётаки посоветовал-бы, перед тем как нести херню - почитай пж, что же такое оверкоммит и для чего он нужен.

Давай я тебе расскажу - оверкоммит никак не влияет на устройство связывания памяти - раз. Оверкоммит никакой жопой по умолчанию не «включен» - два. Оверкоммит никак не связан вообще с вашим о нём представлениями.

Нахрен ты уличаешь в чем-то пацана, если нихрена в теме не понимаешь?

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

Ты слишком толсто и примитивно троллишь, что постоянно выдаёт в тебе школоту. Иди таблицу умножения учи, СПВ.

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

Потоки Джавы == потоки ОС, в ней нет «зелёных» потоков.

roy ★★★★★ ()

Каждый раз, когда на ЛОРе (написанном на Джаве, ну да ладно) пытаются закопать Джаву, я смотрю, какие языки популярны в таких компаниях, как Amazon, Google, LinkedIn, Expedia и других, не говоря о финансовом секторе типа Дойче Банка, Bloomberg, Wells Fargo, ритейла типа Target, Walmart (WalmartLabs которых вообще на Clojure пишет). Конечно, Джава там не 100%, а 50-60%, и это правильно. Но про закапывание речи не идёт вообще. Есть конечно Facebook, Twitter, Instagram, где совсем не Джава, но и не Node.js

А к чему спор-то? Не нравится Джава? Ну не пиши. У Джавы есть недостатки, но с объективной точки зрения это точно не скорость её работы.

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

Именно.
Я сейчас работаю в Новой Зеландии в крупной международной компании - тут полностью джава.
Через дорогу у нас какая-то другая крупная компания - у них тоже джава.
До этого работал в Citi Group - тоже джава. Маржинальная торговля, трейдинговые системы - джава.

Да, джава не идеальна, но она прекрасно справляется со своими задачами.

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

Только twitter все-таки много чего на джаве пишет, да и фэйсбук тоже пишет опенсурс всякий на джаве. Ту же кассандру они написали.

Я же и не спорю, что джава плоха во всех отношениях, у нее есть своя ниша, но я это все к тому, что пора прекращать ее везде пихать, когда есть более годные и новые инструменты.

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

Так всегда надо использовать правильные инструменты, и необязательно новые. Пока Джава вполне справляется с тем, где её используют перечисленные мной компании. Мир Джавы меняется весьма быстро и появляется много интересных технологий, Spring Boot, Hazelcast, Apache Storm, да много их.

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