@dlangru

Страница 229 из 719
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-у в несколько потоков

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

Страница 229 из 719