@dlangru

Страница 172 из 719
Dmitry
18.05.2017
15:06:48
просто хотел проверить ввел ли пользовать в качестве аргумента командной строки 0 или нет.

Dmitry
18.05.2017
15:10:51
погоди, это как?

Andrey
18.05.2017
15:29:18
в std.typecons шаблон. судя по примерам, подойдет

Google
Dmitry
18.05.2017
18:20:59
а можешь пример показать? А то что то не пойму как юзать

Andrey
18.05.2017
18:23:39
ну вот например Nullable!int x; assert(x.isNull); x = 42; writeln(x); int y = 42; assert(x == y);

Dmitry
18.05.2017
18:24:57
спасибо, а этот модуль std.typecons он вообще для чего предназначен? Я его суть не совсем понимаю

Andrey
18.05.2017
18:28:14
ну вот для этого и предназначен) Nullable и всякие разные полезные штуки. tuple например, еще чего там...

реализует общеупотребимые сушности. подробней не скажу, та как я D две недели как изучаю)

Ievgenii
18.05.2017
20:07:18
Сравнивал Го и Ди

vibe.d

Так Ди хорошо течёт....

Лефолтный пример

*дефолтный

А так на равне

Но Вайб прожорлив по памяти, + течёт :(

Oleg
18.05.2017
20:15:14
Так Ди хорошо течёт....
А ты сборку мусора вызвал или смотрел как память кушается?

Google
Oleg
18.05.2017
20:21:47
У меня уползало до 700 лишних метров (потом останавливался), пока эту волшебную строчку не добавил, в итоге прога ела 40 мб (с гномом)

Ievgenii
18.05.2017
20:41:34
Я просто взял предлагаемый скелетон для вайб

И скомпилировал его

Потом ab -c 200 -n 100000

И так несколько раз запускал

В итоге каждый запуск растет

А там всего то hello world!!!!

Oleg
18.05.2017
21:03:08
мне кажется так и должно быть

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

а так там политика достаточно жидкая: пока "нормально всё" — выделять

Max
18.05.2017
21:31:11
В итоге каждый запуск растет
В D сборщик запускается только когда память заканчивается, в отличие от го, где тот работает нонстоп. Так что либо дёргай руками, либо забей.

Ievgenii
18.05.2017
22:12:47
А он течёт. Даже в таком приложении, где нет бизнес логики

В D сборщик запускается только когда память заканчивается, в отличие от го, где тот работает нонстоп. Так что либо дёргай руками, либо забей.
Это тоже не корректно. Если на компе запущено 2 приложения, допустим, и первое сожрало почти все, а после какого-то момента более активнее начинает работать второе, а первое простаивает, но при этом сожрало много памяти, то оно не и не отпустит, так как и не знает, что эту память нужно освободить, т.к. в ней нуждается другое приложение

Oleg
18.05.2017
22:46:22
Это тоже не корректно. Если на компе запущено 2 приложения, допустим, и первое сожрало почти все, а после какого-то момента более активнее начинает работать второе, а первое простаивает, но при этом сожрало много памяти, то оно не и не отпустит, так как и не знает, что эту память нужно освободить, т.к. в ней нуждается другое приложение
с какой точки зрения не корректно? да и вроде не так всё просто. приложение может запустить сборщик "принудительно" по сигналу (SIGUSR1 или SIGUSR2 не помню), поэтому система или внешнее контролирующее приложение может сказать, что "хватит жрать"

В D сборщик запускается только когда память заканчивается, в отличие от го, где тот работает нонстоп. Так что либо дёргай руками, либо забей.
сборка запускается, а к сборщику происходит обращение каждый раз как память выделяется и как раз в такой момент он может принять решение о сборке, а может и не принять

и кстати его настраивать ещё можно

Ievgenii
18.05.2017
22:49:14
Может и можно

Но не должен скелетонный пример течь!

А он течет

Google
Oleg
18.05.2017
22:50:19
да блин, с чего ты взял?)

Ievgenii
18.05.2017
22:50:22
И безбожно течет

Oleg
18.05.2017
22:50:34
проверять валгиндом бесполезно

он будет показывать выделения, а сборку нет

Ievgenii
18.05.2017
22:51:18
Я вижу, что приложение жрет много памяти

Oleg
18.05.2017
22:51:25
и термин "утечка памяти" всё-таки подразумевает, что ты не можешь её высвободить и она занимает место, здесь ты можешь высвободить

Ievgenii
18.05.2017
22:51:47
А точно такой же пример 1 в 1 на ГО не течёт... :(

Oleg
18.05.2017
22:52:12
кароч ок, пусть течёт)

от прямоты рук в целом всё зависит, а vibe не эталон в этом плане

Oleg
18.05.2017
22:53:59
читаем связанный с ошибками в работающих программах, вовремя не освобождающих ненужные уже участки памяти

Ievgenii
18.05.2017
22:54:12
Да

И?

Oleg
18.05.2017
22:54:16
если тебе срочно, то вызови сборку руками

сборщик считает, что ещё не время

Ievgenii
18.05.2017
22:54:35
Вовремя!

Oleg
18.05.2017
22:54:37
проблема в понимании отсутствия проблемы

а что значит вовремя?

как только так сразу?

Google
Ievgenii
18.05.2017
22:55:02
Ты сказал, что это не утечка, я тебе показал, что это именно утечка

Oleg
18.05.2017
22:55:15
я по прежнему считаю что это не утечка

потому что "вовремя" для тебя не является эталоном "вовремя" для других

Ievgenii
18.05.2017
22:55:50
Ну можешь, конечно, считать...

https://github.com/rejectedsoftware/vibe.d/issues/924

Ievgenii
18.05.2017
22:56:38
И к чему это?

Oleg
18.05.2017
22:57:08
моё личное мнение, что vibe это дерьмо и ставить его как лицо языка нельзя

Admin
ERROR: S client not available

Oleg
18.05.2017
22:57:21
дерьмо потому что подход к разработке такой

Ievgenii
18.05.2017
22:57:22
У меня кривые руки, что я запустил пример от самого фреймворка и он течёт? О.о

Oleg
18.05.2017
22:57:35
ты до конца прочитал?

Ievgenii
18.05.2017
22:58:01
Да

Oleg
18.05.2017
22:58:04
от прямоты рук в целом всё зависит, А VIBE НЕ ЭТАЛОН В ЭТОМ ПЛАНЕ

а претензия к алгоритму сборки

Ievgenii
18.05.2017
22:58:54
Это не притензия к сборщику

А констатация факта утечки...

Oleg
18.05.2017
22:59:13
тогда я тебя не понял

сорян

Google
Ievgenii
18.05.2017
22:59:53
Руками вызывать сборщик - дороговато...

Oleg
18.05.2017
23:00:05
в каком смысле дороговато?

Ievgenii
18.05.2017
23:00:13
В прямом

Oleg
18.05.2017
23:00:24
а как тогда не дороговато?

Ievgenii
18.05.2017
23:00:25
Это блокирующее действие

Oleg
18.05.2017
23:00:34
а по другому не блокирующее?

Ievgenii
18.05.2017
23:00:38
Удалять руками за собой

Oleg
18.05.2017
23:00:41
остановка мира в го?

руками тоже можно, но мы возращаемся к С++ в этом случае

Ievgenii
18.05.2017
23:01:12
Удалять объекты, которые создаёшь...

Oleg
18.05.2017
23:01:17
ну да

Ievgenii
18.05.2017
23:01:22
Не совсем

Oleg
18.05.2017
23:01:24
удаляешь как попользовался

прям как в С++

любой сборщик несёт те или иные накладные расходы или проблемы

Ievgenii
18.05.2017
23:02:13
Это нормально, если ты знаешь, что объект тебе более не нужен - удали его

Oleg
18.05.2017
23:02:46
в чём тезис? никто не спорит что это эффективно с точки зрения производительности

но вот накладных расходов просто жесть сколько от этого

Ievgenii
18.05.2017
23:03:02
А в фреймворке такое грубое принебрижение памятью - это недопустимо

Oleg
18.05.2017
23:03:34
человеко-часы разработки/отладки

Ievgenii
18.05.2017
23:04:01
Ну не знаю...

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