@dlangru

Страница 626 из 719
Ievgenii
06.07.2018
16:09:23
Что за хрень

Выходит это не прикол LibEv, а что-то другое...

Dmitry
06.07.2018
16:12:10
Кто писал на ди многопоточные приложения, есть с ними хоть какие то проблемы или за счет TLS все хорошо?

Ievgenii
06.07.2018
16:13:42
Кто писал на ди многопоточные приложения, есть с ними хоть какие то проблемы или за счет TLS все хорошо?
Ну то, что я вижу из проблем, то только асинхронное общение между потоками

Google
Ievgenii
06.07.2018
16:13:53
Ну или строить их на пейрСокет

Dmitry
06.07.2018
16:38:46
Я хочу сравнить питон и ди в производительности потоков. Думаю как лучше сделать. Запустить больше потоков чем ядер и посмотреть где быстрее отработаются?

Или есть вариант лучше?

Dmitry
06.07.2018
16:45:11
Но тогда я эффект от GIL не замечу

Dmitry
06.07.2018
16:45:54
Я хочу убедиться в этом и цифры глянуть

Evil
06.07.2018
16:46:30
Ievgenii
06.07.2018
16:47:20
)))

Питон интерпритируемый язык

Ди - компилируемый

Конечно будет быстрее

Google
Dmitry
06.07.2018
16:52:09
Но тогда я эффект от GIL не замечу
Эффект от GIL проявляется при числе потоков больше 1. С ним же даже на 32 ядрах все равно лишь один поток работает.

Oleg
06.07.2018
17:57:25
Кто писал на ди многопоточные приложения, есть с ними хоть какие то проблемы или за счет TLS все хорошо?
с многопоточным программированием всегда есть проблемы, которых нет при однопоточном, что бы ты не придумывал)

просто D позволяет проще обращать внимание на важные моменты

но и сравнение может быть не совсем честным: на python есть много разных библиотек, которые могут быть видеокартой ускорены, что автоматически на большом объёме порвёт процессор

как пример перемножение: матриц на питоне и на D

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

Dark
06.07.2018
18:14:17
Это уже будет D vs C+Python

Dmitry
06.07.2018
18:15:16
Или даже фортран.

Dark
06.07.2018
18:16:11
Кстати, а как D Runtime работает? Через промежутки времени запускается или как?

Dmitry
06.07.2018
18:16:52
Что значит работает? Это просто набор служебных функций.

Делаешь new - вызывается ф-я из рантайма.

И т.д.

Dark
06.07.2018
18:17:36
Я об GC конкретнее

Maxim
06.07.2018
18:18:27
https://dlang.org/spec/garbage.html#op_involving_gc

Dmitry
06.07.2018
18:18:30
GC может быть вызван, когда во время аллокации памяти под рукой не оказывается свободного кусочка.

Если не аллоцируешь - он не вызывается.

Можно хоть весь день в цикле крутиться, ни разу GC не спровоцировав.

Dark
06.07.2018
18:20:40
То есть на GC нет накладных расходов, считай?

Maxim
06.07.2018
18:21:27
пока не делаешь операцию, которая требует GC, нет

а там уже как повезет)

Google
Dark
06.07.2018
18:22:38
Тогда непонятно, почему в betterC нет GC

Maxim
06.07.2018
18:22:58
в каком плане непонятно?

Dmitry
06.07.2018
18:23:15
Потому что когда он таки вызывается, может работать сколь угодно долго.

Dark
06.07.2018
18:24:19
И как это противоречит идеям betterC?

Maxim
06.07.2018
18:25:00
кажется назревает очередная итерация беседы про betterc)

Dark
06.07.2018
18:25:26
Платиновый тред, ветер северный

Maxim
06.07.2018
18:25:43
у betterc по факту нет идей, это просто D с выкинутым рантаймом

Dmitry
06.07.2018
18:25:50
Когда у тебя malloc работает не микросекунды, а секунды - это хуже, чем Си, а не лучше. :)

Есть одна идея - как Си, только лучше.

Maxim
06.07.2018
18:26:29
ну и да, поскольку рантайм выкинут, остается только ручное управление памятью, а значит, никаких остановок мира и неконтролируемого расхода памяти

и еще один плюс: в win32 x86_mscoff простенькие программки генерят .exe размером меньше 10 кб)

Dark
06.07.2018
18:27:58
Тогда непонятно, зачем выкидывать классы? Можно же под капотом new сделать malloc, а под капотом delete (которого удалили непонятно за что) - free

Maxim
06.07.2018
18:29:04
ну как сказать, тогда для классов нужен будет какой-нибудь подсчет ссылок

Dark
06.07.2018
18:29:27
Нет

У нас же есть delete

Удаляем вручную

Maxim
06.07.2018
18:29:39
нету у нас delete

Dark
06.07.2018
18:30:08
Был. Но мне непонятно, что мешало бы сделать такое поведение

Maxim
06.07.2018
18:30:38
ну вот есть у тебя где-нибудь ссылка на объект, а где-то в другом месте ты взял и прибил его

Dmitry
06.07.2018
18:31:11
Да не в этом дело, структуры-то есть, с ними вопросы ссылок и памяти те же самые.

Google
Dmitry
06.07.2018
18:31:25
Просто в Си классов нет, есть структуры.

А тут тот же Си, только лучше. :)

Технический момент там был - это кастинг

Он по-хорошему требует кое-каких штук из рантайма

Для хождения по иерархии классов

Maxim
06.07.2018
18:32:29
структуры же на стеке по умолчанию и копируются)

Dmitry
06.07.2018
18:32:47
Не все же они на стеке будут

В реальных программах большинство живет в куче

Maxim
06.07.2018
18:33:04
структур-то?

Dmitry
06.07.2018
18:33:08
Да

Admin
ERROR: S client not available

Maxim
06.07.2018
18:33:14
ну не знаю)

Dmitry
06.07.2018
18:33:15
Открой любой проект на Си

Maxim
06.07.2018
18:33:24
мы про ди говорим же, не про си

Dmitry
06.07.2018
18:33:32
Нужны же данные, живущие дольше одной ф-ии

Dark
06.07.2018
18:33:36
Мы говорим про betterC

Dmitry
06.07.2018
18:33:41
именно

Maxim
06.07.2018
18:33:55
BetterC — это D с выброшенным рантаймом)

Dmitry
06.07.2018
18:34:09
и половиной языка

Maxim
06.07.2018
18:34:29
ну со всем, что завязано на рантайм

Google
Maxim
06.07.2018
18:35:19
хотя, много чего незаслуженно попало под нож)

просто потому что оно нечаянно было завязано на рантайм, но это поправляют

Dmitry
06.07.2018
18:35:49
Кароч, если нужен беттерСи с классами и ГЦ, то надо вызывать его компилятор без ключика -betterC ;)

Это просто D

Dark
06.07.2018
18:36:25
Так вот, мне все равно непонятно, что, только идеология(с) betterC мешает туда классы завезти?

Maxim
06.07.2018
18:37:10
классы серьезно завязаны на рантайме

Dark
06.07.2018
18:37:38
Как именно?

Maxim
06.07.2018
18:38:29
они создаются в куче, за их жизнью следит сборщик мусора, для наследования нужно typeinfo

есть возможность использовать extern(c++) классы, даже вроде с наследованием, но только через грязные хаки и боль)

Dark
06.07.2018
18:40:32
Первые две не препятствие, а про третье надо подробнее. Разве наследование не в CT?

Maxim
06.07.2018
18:41:11
с чего вдруг не препятствие?)

Dmitry
06.07.2018
18:41:35
Создавать можно было бы malloc'ом

Следить вручную

Dark
06.07.2018
18:42:27
Достаточно прикрыть new - malloc и добавить delete - free, как я уже писал выше

Pavel
06.07.2018
18:43:01
Первые две не препятствие, а про третье надо подробнее. Разве наследование не в CT?
ты спрашиваешь сейчас "если из D выкинули рантайм то в чем проблема его добавить"

Maxim
06.07.2018
18:43:03
но этого сделать нельзя же, и никакого delete не существует)

хочешь ручных классов — есть целый язык, C++ называется)

Pavel
06.07.2018
18:43:53
Если вернуть в betterC GC и классы то у него снова рантайм распухнет на сотню кб

Pavel
06.07.2018
18:44:32
Тогда непонятно, почему в betterC нет GC

С ручным управлением памятью
Так делай) нет проблем

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