
Ievgenii
06.08.2017
05:45:45
На каком ты компе?
Какая у тебя OS?

Friedrich
06.08.2017
05:46:01
Какое это имеет значение?

Ievgenii
06.08.2017
05:46:06
Большое

Google

Friedrich
06.08.2017
05:46:09
Никакого.

Ievgenii
06.08.2017
05:46:20
Поставь +

Friedrich
06.08.2017
05:46:23
У меня Windows, допустим, что дальше?
На любой ОС будет ровно тот же результат.

Ievgenii
06.08.2017
05:46:43
Нет
Я тебе ссылки бросил

Friedrich
06.08.2017
05:46:56
Ок, на какой ОС будет другой результат?
Сорян, я по твоим ссылкам мало что понял. Кажись, там что-то на пыхе.
В смысле, я вижу, что там неправильно работает, но не берусь предположить, почему.

Ievgenii
06.08.2017
05:47:37
Какая разница на каком там языке?

Friedrich
06.08.2017
05:47:55
В том-то и дело, что никакой. На любом должно работать одинаково.
Я показал, как.

Ievgenii
06.08.2017
05:48:09
Поставь +

Google

Friedrich
06.08.2017
05:48:12
+

Ievgenii
06.08.2017
05:48:37
[\r\n]+

Friedrich
06.08.2017
05:48:44
Оппа
Зачем это?
Ок, поставил плюс, и всё совсем стало неправильно работать. Смотри:
> 'aaa\r\n\r\nbbb'.split(/[\r\n]+/)
(2) ["aaa", "bbb"]
На вход даю три строки (из которых одна пустая), а оно говорит что их две. Неправильно!
Для сравнения, вот какого вывода я ожидаю:
> 'aaa\r\n\r\nbbb'.split(/\r\n|\r|\n/)
(3) ["aaa", "", "bbb"]
Я бы предположил, что пыха просто по умолчанию выбрасывает пустые результаты из массива.
Собственно, вот тебе репрезентативный результат на единственном нормальном (в рамках дискуссии) языке, D: https://ideone.com/WOcoiQ
Он возвращает три строки для твоего регекспа, и две для моего.

Ievgenii
06.08.2017
06:06:29
Да, в D, оно как-то так обрабатывается

Dmitry
06.08.2017
07:04:09
Хороший коммент:

qwerty
06.08.2017
08:50:31
никто не видел нигде js либу для подсветки D?
а все
нашел

Dmitry
06.08.2017
13:46:00
https://habrastorage.org/getpro/habr/comment_images/bf9/ed7/9d9/bf9ed79d9afd882eaeb693fecfeb965a.jpg

Pavel
06.08.2017
13:46:39
Хороший коммент:
Так это понятно что в микросервисах все нетранзакционно, от языка не зависит
Как вариант можно пробовать какую-нибудь событийную архитектуру с журналом событий. И каждый сервис проигрывает этот журнал пока у него не получится

Dmitry
06.08.2017
13:50:14
Про JS. Как я понимаю нем один единственный тормозящий запрос (к примеру жрущий CPU) все сказки про 10 000 коннектов одновременно рушит раз и навсегда

Pavel
06.08.2017
13:50:51
Это как

Google

Dmitry
06.08.2017
13:51:29
ну типа задача же не просто контент отдавать, а что-то там делать на сервере. Хоть какую-то обработку

Pavel
06.08.2017
13:51:50
А ну числодробилка да. Но запрос где много IO операций отрабатывает на ура
Но как правило у жс сервисов задача как раз отдать контент
Залезть в базу, в еще парочку сервисов по сети, и отдать солянку вместе со статикой на клиента. Там вычислять особо нечего.

Dmitry
06.08.2017
13:55:04
Кстати, вот почему браузер тормозит? Я правильно понимаю, что один единственный скрипт может привести к тому, что весь сайт будет дико лагать т.к. скрипт будет сжирать 99% процессорного времени

Pavel
06.08.2017
13:56:46
Оу ну это сложный вопрос, там много факторов и костылей
Зависит от того как браузер обрабатывает dom дерево, как клиентские скрипты с ним работают..

Ievgenii
06.08.2017
15:13:52
Ну это руками пишется в таком случаи. + на то это и микросервисы, чтобы быть независимыми.
Что по поводу передачи контекста - это уже вопрос не к языку, а к реализации вашего IPC

Maxim
06.08.2017
16:32:24

Dmitry
06.08.2017
16:51:04
А фаеберы могут на GPU работать? Там же ядер дофига?
И вообще зачем нужны файберы в ситуации когда ядер очень много? Можно же по потоку на ядро создавать

Maxim
06.08.2017
16:52:09
переключение между потоками — дорогостоящая процедура

Dmitry
06.08.2017
16:53:33
это понятно, но когда ядер дофига можно по ядру на процесс выделять и ничего не переключать

Maxim
06.08.2017
16:54:27
ну, пока вроде не так уж и много ядер)

Dmitry
06.08.2017
16:54:47
На современной видеокарте уже сейчас 1024 ядра это реальность

Maxim
06.08.2017
16:55:07
это ядра видеокарты)
они же не x86 совместимы

Dmitry
06.08.2017
16:55:31
а что мешает на них вычисления выполнять?

Maxim
06.08.2017
16:56:42
да ничего не мешает, берешь gpgpu и считаешь

Google

Pavel
06.08.2017
16:59:57
https://github.com/nexor/socket-concurrency-benchmark написал readme, приложил простенький тест с результатами

Ievgenii
06.08.2017
20:07:36
Результаты ожидаемые
Нет потоков - нет переключений

Pavel
06.08.2017
20:10:03
Там 20 потоков

Ievgenii
06.08.2017
20:13:34
И что?
Я о том, что чем меньше ты заставляешь переключаться процессор, тем меньше накладных расходов.
Да, запросы отсылались в 20 потоков
Если бы ты сокеты обрабатывал в блокирующем режиме - то все сокеты бы обрабатывались аоочереди. Но там явно не блокирующие сокеты использовались.

Pavel
06.08.2017
20:21:48
Ну для thread там в блокирующем режиме читаются данные
а вот для select в неблокирующем конечно

Admin
ERROR: S client not available

Ievgenii
07.08.2017
06:00:25
Я бы и в тредах с не блокирующими работал, чтобы можно было обработать несколько. Запустить сразу N тредов, без общения между собой и мастером (ну хотя бы без общения для обработки входных сообщений), а каждый независимый, и обрабатывать себе там не блокирующие соединения.
Ну это равносильно select-у в несколько потоков

Денис
07.08.2017
11:34:45

Pavel
07.08.2017
14:12:03
https://run.dlang.io/is/HdlgZo очень интересные результаты
Я у себя локально запускал, обычные классы аллоцируются где-то за 1.3 секунды, классы на стеке за 500 миллисекунд примерно, а структуры за 30-50 миллисекунд. А тут получается что классы в куче даже быстрее чем на стеке.

Maxim
07.08.2017
14:16:18
Test allocation of 10000000 new classes: 904 ms, 867 μs, and 7 hnsecs
Test allocation of 10000000 scoped classes: 967 ms, 339 μs, and 9 hnsecs
Test allocation of 10000000 structs: 45 ms, 483 μs, and 4 hnsecs
Ubuntu 17.04, DMD64 D Compiler v2.075.0
как-то так)
так-то логично, насколько помню, scoped оборачивает класс в структуру, которая при выходе из области видимости удаляет объект)

Pavel
07.08.2017
14:20:06
Test allocation of 10000000 new classes: 641 ms, 159 μs, and 3 hnsecs
Test allocation of 10000000 scoped classes: 271 ms and 190 μs
Test allocation of 10000000 structs: 5 ms, 713 μs, and 8 hnsecsУ меня вот так, считаю это более логичным.

Google

Pavel
07.08.2017
14:20:23
Иначе зачем тогда делать классы скоупными вообще

Maxim
07.08.2017
14:20:56
ну вообще, чтобы он гарантированно уничтожался при выходе из области видимости)
собственно, само название scoped на это как бы намекает)

Pavel
07.08.2017
14:21:19
А ну ок. Но хочется же чтобы и работало быстрее.
Кстати прикол, вчера ночью у меня классы гораздо дольше аллоцировались чем сейчас. Видимо ноут был уставший.

Maxim
07.08.2017
14:21:56
хм, магия какая-то, запускал через rdmd, сейчас просто скомпилировал, совсем другие результаты)
Test allocation of 10000000 new classes: 866 ms, 347 μs, and 4 hnsecs
Test allocation of 10000000 scoped classes: 339 ms, 507 μs, and 8 hnsecs
Test allocation of 10000000 structs: 10 ms, 5 μs, and 5 hnsecs

Pavel
07.08.2017
14:22:20
Вот, я тоже через dmd компиляю
v2.073.2

Maxim
07.08.2017
14:24:44
LDC - the LLVM D compiler (1.3.0):
Test allocation of 10000000 new classes: 5 ms, 21 μs, and 3 hnsecs
Test allocation of 10000000 scoped classes: 246 ms, 426 μs, and 9 hnsecs
Test allocation of 10000000 structs: 3 ms, 344 μs, and 5 hnsecs
причем, это стабильный результат)
магия llvm в действии?)

Pavel
07.08.2017
14:29:20
Это очень похоже на кеширование

Maxim
07.08.2017
14:30:54
а, ну там по коду просто создается класс или структура, а потом элементу присваивается значение, вполне возможно, llvm решил, что оно того не стоит, и просто не стал ничего делать, он может)
надо в asm лезть смотреть, что там к чему)

Dmitry
07.08.2017
18:13:20
Не плохо Ди так хайпнул, прям как биткоин..))
http://erdani.com/d/downloads.daily.png

Pavel
07.08.2017
18:15:29
То есть за год удвоился.
Странно но на D нету ничего для работы с биткоин :)

Ievgenii
07.08.2017
20:08:55
Хочется написать какой-то аналог Рабита на Ди

Dmitry
07.08.2017
20:12:52
Привет парни!
Вопрос: если решил попробовать написать библиотеку на D, которая будет использоваться софтом на С, нужно ли отключать GC? Или его всё же можно использовать?

Pavel
07.08.2017
21:18:19
Можно по идее
Если в библиотеку втянуть весь дишный рантайм с gc