@dlangru

Страница 685 из 719
Pavel
13.09.2018
19:51:11
Ну и еще говорят что в типе Variant тоже как-то все косячно реализовано.

Google
Ievgenii
13.09.2018
19:51:55
Он не знает о последовательности полей

О их типе

Pavel
13.09.2018
19:52:05
Ну как-то, с помощью чудесной магии крутого и гибкого языка )

Ievgenii
13.09.2018
19:52:07
До того, пока не создаст

Igor
13.09.2018
19:52:11
о )))

Ievgenii
13.09.2018
19:52:17
Это рефлексия

И она, как раз, медленная

+ в исходники поместится куча не нужной инфы о структуре...

Выдели в куче

Если у тебя плагинов будет, скажем, 10

То если куча в 10 раз медленнее, то ты получишь тот же выхлоп

Главное не забыть после очистить эту память!

Google
Pavel
13.09.2018
19:54:33
Если у тебя плагинов будет, скажем, 10
Как и при написании любого лютого софта я мыслю что плагинов будет под сотню и бот сидит одновременно в 500 чатах, более того сидит сотня инстансов такого бота. И сообщения валят сотнями в секунду.

Иначе если не входить в такие крайности, то я и на php могу спокойно бота написать.

Igor
13.09.2018
19:55:55
тогда безусловно принимаешь в immutable event и отдаёшь ref

без куч

Ievgenii
13.09.2018
19:56:37
Тогда тем более будет быстрее!
Чем создавать 100 или 500 структур на стеке в отправителе, а потом столько же в получателе, + копирование самих данных, а если их там много....

Pavel
13.09.2018
19:57:29
Насчет переиспользования созданной структуры из пула, и выделения структуры на стеке - скорость одинакова по идее.

Ievgenii
13.09.2018
19:57:39
И используешь ее везде

Дык нет

Ты создаёшь всего одну!

Pavel
13.09.2018
19:58:06
И используешь ее везде
Как я ее везде использую когда сообщение может обрабатываться некоторое время и за это время придет несколько других сообщений

На каждое сообщение своя структура

Ievgenii
13.09.2018
19:59:12
Ну ты создаёшь столько, сколько приходит сообщений

Но не умножается на количество плагинов

500 сообщений в секунду, а плагинов 100

Выходит 500*100=50'000 в сек

Google
Ievgenii
13.09.2018
20:00:13
50'000*2

Выходит 100К в сек

А так всего 500*2

То есть 1К

В 100 раз меньше

Профит

Но чуть сложнее

Ну так если ты пишешь серьезное приложение, оно будет сложное

Тут основная проблема - когда удалять структуру

Нужно отлавливать ситуацию, когда все плагины отработали

Pavel
13.09.2018
20:04:14
Ну, я еще не знаю какие структуры могут быть в будущем. Может они станут сильно разнообразными.

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

Oleg
13.09.2018
20:04:52
@chebotarevp так норм? https://run.dlang.io/is/rjsqkA

Pavel
13.09.2018
20:04:54
Сложности еще будут впереди, а они уже так быстро начались.

Ievgenii
13.09.2018
20:05:25
Igor
13.09.2018
20:06:05
строки и так шарятся

сложности будут если там есть unshared references

Oleg
13.09.2018
20:06:49
@chebotarevp просто в любом случае std.concurrency использует массив для хранения очереди, тут устраняется проблема с Variant и копированием immutable

Ievgenii
13.09.2018
20:08:52
Oleg
13.09.2018
20:09:00
@chebotarevp просто в любом случае std.concurrency использует массив для хранения очереди, тут устраняется проблема с Variant и копированием immutable
хотя нет, не массив а односвязный список, но сути не меняет (динамическая память выделяется всё равно)

Google
Pavel
13.09.2018
20:09:04
А если там 20 строчных полей, в которых лежит по 10К символов?
Тогда конечно есть смысл с указательной семантикой начать работать

Ievgenii
13.09.2018
20:09:38
Ievgenii
13.09.2018
20:09:58
Вот и делай решение, которое будет подходить всегда

Igor
13.09.2018
20:10:03
ну строки это структура котрая указывает на иммутабельные данные эту структуру можно спокойно передавать между тредами

Oleg
13.09.2018
20:10:12
Че правда? Если так то это хреново
https://github.com/dlang/phobos/blob/master/std/concurrency.d#L2389

Dark
13.09.2018
20:10:54
Так, у меня немного оффтопный вопрос. А в C++ можно как в dmd получить код уже с развернутыми темплейтами?

Pavel
13.09.2018
20:10:55
https://github.com/dlang/phobos/blob/master/std/concurrency.d#L2389
А эти ноды каждый раз создаются или переиспользуются?

Ievgenii
13.09.2018
20:11:26
ну строки это структура котрая указывает на иммутабельные данные эту структуру можно спокойно передавать между тредами
Я о том, что если строки большие и структур много, в которых хранятся эти строки, то и памяти много уйдет

Admin
ERROR: S client not available

Oleg
13.09.2018
20:11:27
просто этот messageBox это объект каждого потока

Pavel
13.09.2018
20:12:56
Я о том, что если строки большие и структур много, в которых хранятся эти строки, то и памяти много уйдет
Это наводит на мысль что в качестве события больше подходит класс а не структура, так как везде будет передаваться ссылка.

Dark
13.09.2018
20:14:05
А как это в dmd сделать?
Ну на run.dlang.io есть пункт "AST"

Igor
13.09.2018
20:17:11
Ну на run.dlang.io есть пункт "AST"
только в хроме… или у кого-то в firefox показывает?

Pavel
13.09.2018
20:21:13
Ну такое, лично мне проще одна структура и передача ее указателя
Блин это смешно, это ровно то для чего были придуманы классы )

Google
Pavel
13.09.2018
20:22:10
@chebotarevp так норм? https://run.dlang.io/is/rjsqkA
Выглядит интересно в целом, но ты уверен что там случаи конкурентности учтены? Вот в std.concurrency есть всякие atomic операции и локи, явно они там не просто так вписаны

Ievgenii
13.09.2018
20:47:15
А с классами такого не выйдет

Точнее выйдет, но не симпотно

Да и тут чисто модель данных

Самое то для структуры

Глеб
14.09.2018
02:35:34
слушайте, я не понимаю. ну зачем пытаться копировать иммутабельную структуру и пытаться переприсваивать другой иммутабельной структуре? зачем насиловать компилятор? передача указателя некомильфо? но ведь это самый естественный вариант, компилятор уже даёт гарантии за счёт иммутабельности. ну надо же учитывать, хотя бы в общих чертах, что должно происходить на низком уровне! такое впечатление, что из идеологических соображений в часовом механизме начинаем копаться ломом

Maxim
14.09.2018
04:11:36
более того, в D работа со структурой и с указателем на структуру синтаксически ничем не отличается

Dmitry
14.09.2018
06:28:56
А указатель на стек не возможен?

NullSanya
14.09.2018
06:29:14
Но время жизни ограниченно

Igor
14.09.2018
06:30:41
Да, создаёшь ее в куче и передаешь указатель. Только так
У этого варианта есть свои минусы и вопрос нужно ли заниматься созданием в куче вместо того что-то скопировать десяток байт

Dmitry
14.09.2018
06:30:43
Типа после переключения между тредами ссылка может умереть?

Maxim
14.09.2018
06:30:57
не может, а умрет

NullSanya
14.09.2018
06:31:16
Скорее после выхода из функции

Ну в расте считается, что ссылка, передаваемая в другой поток, должна жить вечно

Maxim
14.09.2018
06:32:05
дело не в ссылке и расте, а в стеке)

Toha
14.09.2018
06:32:08
или жсфидл

или чо там модно щас

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