
Mike
24.01.2018
10:33:31

Igor
24.01.2018
10:34:14
эх, когда-то даже мультитаскер под мсдос писал на асме… детство золотое...

Mike
24.01.2018
10:36:18

Pavel
24.01.2018
10:36:54

Google

Pavel
24.01.2018
10:37:20
А 30 лет назад все планировали сделать радио карманное
А 100 лет назад - плот или кораблик и уплыть на нем в кругосветку

Mike
24.01.2018
11:04:23
А сейчас все хотят «сделать мир лучше»......

Eto
24.01.2018
11:06:25
А сейчас от тимлида можно услышать "но JS же быстр, не сильно медленнее C++"

Mike
24.01.2018
11:22:03

Eto
24.01.2018
11:25:08
Так уж много толку, что оно прекомпилируется.

Mike
24.01.2018
11:26:10

Dmitriy
24.01.2018
11:29:44
Ну, так-то достаточно толку)
Если смотреть чисто математические операции, то V8 не уступает обычным сям. Работа с более сложными конструкциями само собой несколько медленнее, но оно и несколько проще в использовании и лаконичнее, тех же сей. Но кто бы что не говорил, я всё равно на стороне си)
JS просто максимально близкая из удобных альтернатив, позволяющая спокойно работать с вебом не слишком сильно проигрывая в производительности.
Так-то меня изначально D зацепил тем, что он как си, но с Java/JS удобствами
По итогу оказалось конечно, что D для веб разработки сырой чуть более, чем полностью, так как тот же vibe.d хрень подноготоная, а пакетный менеджер пустует, а то, что есть практически лишено документации

Alexey
24.01.2018
11:31:10
а чем плох vibe.d?

Dmitriy
24.01.2018
11:33:20
Он тяжёлый, медленный и содержит в себе слишком дофига зависимостей. То есть, я не могу как в JS набор примитивов и сам себе собрать набор только тех функций, что мне нужны.
По мне, для D нужно сначала написать обычный пакет http и отдельно websocket, потом для них написать обёртку для "удобной" работы и интерфейсами для расширений. И к этой обёртке отдельными пакетами описать квери-парсеры, роутеры и прочее

Alexey
24.01.2018
11:33:46
медленный - это сколько запросов в секунду?

Stepanos
24.01.2018
11:35:12

Google

Alexey
24.01.2018
11:35:24
без конечно.
hello world

Dmitriy
24.01.2018
11:35:36
Сейчас речь чисто о запрос/ответ. База это отдельная статья, к ней претензий пока нет)

Alexey
24.01.2018
11:35:43
мы же не производительность бидэ измеряем

Dmitriy
24.01.2018
11:36:11
https://habrahabr.ru/post/303590/
В данном случае у меня скорее вопрос к этому бенчу
И вопрос скорее не в "скорости", он больше в том, что оно "жирное"

Alexey
24.01.2018
11:37:06
жирное? сколько оперативки жрет?

Dmitriy
24.01.2018
11:37:17
Ссылку на хабру с бенчем ж дал

Pavel
24.01.2018
11:38:05

Alexey
24.01.2018
11:38:29
20 Мб - в ОЗУ это не жирное. IMHO

Pavel
24.01.2018
11:38:37
спустившись на уровень libasync, я выжал 10к в секунду

Dmitriy
24.01.2018
11:39:42
Меня больше беспокоит то, как выглядит использование vibe.d.
Из-за того, что он жирный нужно слишком много времени, чтобы пролистать все исходники, и не понятно сразу что от чего.
Этим мне нравится нодовский пакет http + express + комплект миддлварей к нему. В данной ситуации я точно знаю что подключаю и зачем, есть доверие к используемым пакетам
вайбу доверия у меня пока нет, по причине выше озвученной

Alexey
24.01.2018
11:40:45
по хабрассылке у vibe.d и golang неотличимые показометры. в общем, дело вкуса что выбрать.

Dmitriy
24.01.2018
11:40:48
В вайб даже шаблонизатор встроен из коробки. Ну вот нафига?)

Pavel
24.01.2018
11:41:10
Ну шаблонизатор там не из коробки емнип

Dmitriy
24.01.2018
11:41:19
Роутер зачем ему из коробки? Может мне больше нравится чужой роутер и я хочу его миддлварем подцепить

Pavel
24.01.2018
11:41:19
А как отдельный субпакет ставится

Dmitriy
24.01.2018
11:42:17
Оно очень не гибко. Подписавшись на вайб я лишаюсь выбора. Я вынужден использовать всё, что в него напихали. Такой подход мне не нравится. Он слишом монолитный

Stepanos
24.01.2018
11:42:39

Google

Pavel
24.01.2018
11:43:11
Это с включенным keep-alive ?
С ним может быть, но я мерял без него

Mike
24.01.2018
12:23:56

Alexey
24.01.2018
12:26:22
https://github.com/etcimon/libasync

Evgeny
24.01.2018
12:41:59


Pavel
24.01.2018
12:50:33
Мне кажется, сейчас экосистема D проходит в ускоренном режиме все те грабли на которые натыкались другие взрослеющие языки. Поначалу везде были монолитные библиотеки и фреймворки, обосновывали это тем что там каждый компонент к каждому очень хорошо подходит. Но потом все равно появлялись более независимые и компонентные вещи.

Mike
24.01.2018
12:56:53

Pavel
24.01.2018
12:58:49
Они асинхронные и основаны на Stream

Evgeny
24.01.2018
12:58:55

Pavel
24.01.2018
13:00:59
Да не, как это под капотом те же самые? Там ваще они нигде не юзаются
Там все на асинхронных драйверах

Evgeny
24.01.2018
13:01:29

Evgeny
24.01.2018
13:02:44
хотя в драйвере либасинк, вполее вероятно именно сокеты из фобоса задействованы.
которые сами - суть обертка системных.

Pavel
24.01.2018
13:05:27
В либасинке тоже нету стдшных, там максимум это InternetAddress используется для задания всяких опций
стдшные вообще не подходят, они же синхронные и однотредовые
Ну и работают помедленнее чем libasync насколько я помню
В общем вот супер-сверх-хайп задача: надо написать парсер http который работает в режиме betterC и не аллоцирует память вообще :)

Mike
24.01.2018
13:27:54

Google

Mike
24.01.2018
13:28:15

Pavel
24.01.2018
13:32:19
По поводу однотредности - например libasync можно так извращаться - запустить 5 тредов, в каждом из них запустить свой eventloop, и все это дело подсеодинить к одному сокету, чтобы все треды асинхронно и параллельно растаскивали очередь из входящих соединений. Правда на практике все это глючит и падает в сегфолты, но std.socket так не умеет )
В общем понятно что все это своего рода обвязки над системными сокетами, просто они с разным объемом возможностей сделаны.
в std более менее стандартный код, а в либасинке уже всякие хаки и подгонки под эффективность и производительность.


Mike
24.01.2018
13:37:14

Pavel
24.01.2018
13:37:54
ты про что? поясни?

Mike
24.01.2018
13:40:39
ты про что? поясни?
20% усиилй дают 80% результата, а оставшиеся 80% усилий - лишь оставшиеся 20% результата... (дословно)
Есть ли смысл выжимать из сокетов все соки..? ? изгаляться со сторонними либами, низкоуровневыми хаками, тредами (которые fibers, если я правильно понял) и т.п..... стоит ли оно того в большинстве задач?

Pavel
24.01.2018
13:41:57
Конечно есть, ведь это же драйвер асинхронный, универсальная библиотека. Она должна работать по максимум, никто же не знает в каких проектах она будет использоваться.
Может кто-то захочет написать какой-нибудь проксирующий магистральный сервер который за сутки через себя пропускает петабайт трафика.

Admin
ERROR: S client not available

Mike
24.01.2018
13:43:56

Pavel
24.01.2018
13:45:04
Ну не на ассемблере же писать? Тут вступают в дело перцентили.
В 80% хватит обычных сокетов, остальные 19% - libasync

Eto
24.01.2018
13:45:27

Pavel
24.01.2018
13:45:43
Остальной 1% уже какой-нибудь софт на заказ с аппаратным ускорением и миллионными бюджетами
И соответственно работой на уровне ядра, с прямым доступом к сетевой карте и рассчетами на попадание в процессорный кеш и прочие извращения

Mike
24.01.2018
13:59:57

Evgeny
24.01.2018
14:03:38

Pavel
24.01.2018
14:07:35
Тонкая - ну такое... 3600 строк, GC и классы из кучи с виртуальными таблицами

Google

Pavel
24.01.2018
14:08:13
На хайлоаде в 10к это будет заметно медленнее чем низкий уровень либасинка

Evgeny
24.01.2018
14:26:23

Pavel
24.01.2018
14:27:49
?
Как прикольно читать такие утверждения когда на чемпионате по хайлоаду сам лично на все эти грабли наступил )

Evgeny
24.01.2018
14:29:29
ага, какому-нибудь эрлангу GC не мешает в хайлоад
или жабе
плюсам виртуальные таблицы не мещают в хайлоад

Pavel
24.01.2018
14:32:16
https://highloadcup.ru/

Evgeny
24.01.2018
14:32:37
многопоточность и сокеты - вообще ортогональные понятия

Pavel
24.01.2018
14:34:16
Посмотри там в рейтинге - erlang начинается с 109 места, а все джавы идут в связке с си
Который собственно и обрабатывает сокеты

Evgeny
24.01.2018
14:35:56

Pavel
24.01.2018
14:36:21
Так это и есть реальность
Задача дана - решай на любой языке.
То что там специфичный случай - согласен, в реальных проектах редко такое бывает, но тем не менее, часть реальности

Evgeny
24.01.2018
14:37:49
а вот зачем ты либасинк использовал?
В этом причина твоего 65-го места

Pavel
24.01.2018
14:38:17
Я 37 занял на зачете емнип

Evgeny
24.01.2018
14:38:33
ну сейчас я смотрю, 65-ое

Pavel
24.01.2018
14:38:36
А рейтинг сейчас - это уже после того как народ 3 месяца свои проекты оптимизирует )
Тогда у меня было около 3 недель, пробовал все что можно, начиная с vibed естественно