@dlangru

Страница 269 из 719
Dmitry
22.09.2017
05:39:06
а, видать оно мне не то показывает что-то т.к. код не обернул в функцию

Maxim
22.09.2017
05:40:01
почти наверняка ldc достаточно умный для того, чтобы выкинуть нигде не используемое глобальное определение)

интересно, почему он этого не делает внутри функции, которая не возвращает значение?)

Max
22.09.2017
05:56:05
Наверно потому, что ты не включил оптимизации?

Google
Maxim
22.09.2017
06:01:06
Наверно потому, что ты не включил оптимизации?
ну я не знаю, как этот сайт использует компиляторы, но у меня закралась та же мысль)

Dmitry
22.09.2017
06:30:31
я что-то не пойму, почему у меня тут аутпут больше в разы чем у тебя



А у тебя там срезана часть

что в ней находится?

Maxim
22.09.2017
06:32:57
всякая инициализация и все дела)

druntime, короче)

Dmitry
22.09.2017
06:33:26
как правильно прочитать? Заносим в указатель .... число 7 А между этих строк я не понимаю как оно читается

просто где тут стек вылезает?

Maxim
22.09.2017
06:35:26
dword ptr — это указание размера целевого операнда

mov dword ptr [rsp-4], 7 значит «засунуть в область памяти размером dword по адресу [rsp-4] число 7»

rsp — это регистр, который указывает на начало стека

Dmitry
22.09.2017
06:37:35
значит в стеке адрес перменной х будет и ее значение?

Google
Maxim
22.09.2017
06:38:05
в стеке будет значение переменной

Dmitry
22.09.2017
06:39:09
а ее название это просто адрес так?

Maxim
22.09.2017
06:40:22
ее название — это просто идентификатор в исходном коде, по которому компилятор, анализируя исходный код, понимает, к чему обращается программа

Dmitry
22.09.2017
06:52:18
а дальше все образения по адресу, который рядом с которым лежит или значение или ссылка на значение (если оно в куче) так?



типа так?

Maxim
22.09.2017
06:56:17
нет, в стеке лежат только значения переменных подряд друг за другом)

Dmitry
22.09.2017
06:57:07
а функции и адреса возврата?

Maxim
22.09.2017
06:57:20
либо число, либо структура побайтово, либо ссылка на какую-то фигню в куче

Dmitry
22.09.2017
06:58:12
но вот string это ссылочный тип. получается в стеке будет только указатель на то где это в куче лежит?

Maxim
22.09.2017
06:58:35
да

со string вообще все просто, string — это алиас для immutable(char)[]

т.е. это обычный массив неизменяемых символов, и хранится он как обычный массив)

Eto
22.09.2017
13:42:10
Сейчас колупаюсь в импорте данных в рабочем проекте. И знаете что? Понял, что D'шный GC по своему гениален. Тот импорт написан на JS и иногда он выжирает всю доступную ему память и падает. Не вижу, как он может столько памяти использовать за раз. Остаётся только вариант, что GC не успевает высвободить память и процесс схлопывается.

Eto
22.09.2017
14:46:59
Я сравнивал GC в них.

Oleg
22.09.2017
14:57:47
Я сравнивал GC в них.
GC в отрыве от языка странно сравнивать, имхо

Eto
22.09.2017
15:04:38
Совсем нет. Я более, чем уверен, что импорт падает из-за GC. В D такого бы не было.

Dmitry
22.09.2017
15:27:38
JS это отдельный пиздец. У него стандарты выходят с бешеной скоростью

и не понятно какие проблемы они решают. я хз как на js вообще код читают т.к. он ооочень разный

Google
Eto
22.09.2017
15:59:07
Ещё эта мания 2 пробела в качестве табуляции использовать. Я не знаю, что у людей в головах, что они так постоянно делают.

Oleg
22.09.2017
16:42:48
Ну или глубины вложенности в десяточку а то и более не позволяют по другому писать

Dmitry
22.09.2017
17:28:26
Сейчас колупаюсь в импорте данных в рабочем проекте. И знаете что? Понял, что D'шный GC по своему гениален. Тот импорт написан на JS и иногда он выжирает всю доступную ему память и падает. Не вижу, как он может столько памяти использовать за раз. Остаётся только вариант, что GC не успевает высвободить память и процесс схлопывается.
По-моему, так не бывает - чтобы GC не успевал. Сколько ему надо времени на сборку, столько он и возьмет, а основной процесс подождет. Намного вероятнее баг в коде, где-то остаются ссылки на неиспользуемые данные, вот они в куче и копятся.

'меньше символов - меньше байт по сети передавать' =)
Передавать еще ладно. У некоторых движков JS решение инлайнить ли функцию зависело от длины ее исходника, т.е. наличие лишних пробелов и комментариев могло изменить скорость исполнения.

Andrey
22.09.2017
17:32:40
Max
22.09.2017
18:25:00
Ещё эта мания 2 пробела в качестве табуляции использовать. Я не знаю, что у людей в головах, что они так постоянно делают.
Подвброшу: а вот мне мне нравится использовать 2 пробела, глазами куда меньше надо бегать из-за чего приятнее читать.

Почему бы не использовать один таб тогда? :)
Потому же, почему весь мир не пишет в BSD-style с 8-ю пробелами

Eto
22.09.2017
18:29:47
Т.е. из-за того, что _тебе_ удобнее с 2мя пробелами — все должны использовать 2 пробела?

Max
22.09.2017
18:33:23
Все должны использовать что им нравится, а у меня просто горит от постоянных наездов на табуляцию двумя пробелами.

Eto
22.09.2017
18:40:56
Ты не понял. Я не наезжаю на табуляцию размером в 2 пробела. Каждый ставит, что ему удобно. Другое дело, что так называемся "табуляция" нынче должна называться "пробеляцией". Ведь используя пробелы — ты ограничиваешь остальных своими предпочтениями.

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

Max
22.09.2017
18:49:01
Ты не понял. Я не наезжаю на табуляцию размером в 2 пробела. Каждый ставит, что ему удобно. Другое дело, что так называемся "табуляция" нынче должна называться "пробеляцией". Ведь используя пробелы — ты ограничиваешь остальных своими предпочтениями.
Угу. Отправляешь такой патч на гитхаб с табами и получаешь поломанное выравнивание за свой либеральный выпад. Вообще, можно это дело называть индентацией, если тебе принципиально.

Google
Eto
22.09.2017
18:50:40
Гайдлайны проекта, в который коммитишь, надо читать.

Max
22.09.2017
18:51:07
Дык, это гитхабовский баг, а не проблема чьего либо кодстайла

Eto
22.09.2017
18:56:30
О чём речь? О том, что у гитхаба таб равен 8 пробелам по умолчанию?

Max
22.09.2017
18:59:43
Не знаю исправлено ли сейчас, но раньше у гх точно был баг с табами в патчах (то ли все ломалось из-за лишнего символа в начале, то ли лишние пробелы добавлялись)

Dmitry
22.09.2017
19:00:07
Я вообще стараюсь везде три ставить) потому что 2 мало, а 4 много)

/me шучу

Pavel
22.09.2017
19:06:45
3 - паскаль-стайл

Dmitry
22.09.2017
20:47:38
int[] ints = new int[](100); А так мы резервируем место?

Admin
ERROR: S client not available

Dmitry
22.09.2017
20:47:46
Или в чем смысл такой записи?

Oleg
22.09.2017
21:04:44
новый массив в 100 элементов

смысл этой записи

Dmitry
22.09.2017
21:05:21
1к1 что и reserve?

Oleg
22.09.2017
21:05:47
нет, резервирование и создание массива разные вещи

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

Dmitry
22.09.2017
21:06:39
тогда получается тоже самое что length = 100 ?

Oleg
22.09.2017
21:06:51
тоже нет

но уже ближе

Google
Dmitry
22.09.2017
21:07:25
создается просто массив забитый нулями?

Oleg
22.09.2017
21:07:26
length = 100 может и не создать новый массив на практике, может просто расширить по резервированной памяти

указатель может остаться прежним, а может смениться

операция new всегда новую область памяти отводит

старые данные не будут стёрты, а при length они сохраняются вроде

Dmitry
22.09.2017
21:11:22
так вроде бы с reserve тоже самое будет? будет выделен кусок памяти

Oleg
22.09.2017
21:12:56
И?

Выделен, но не выдан)

Длина массива то прежняя будет

Dmitry
22.09.2017
21:13:37
а.... теперь кжается понял

Oleg
22.09.2017
21:13:42
Это как полоска здоровья в играх

Сама полоска может расшириться, а здоровья то не прибавится

Dmitry
22.09.2017
21:16:22
int[] ints = new int[](10_000_000); оно должно компилиться?

точнее запускаться

у меня просто падает

А не, работает

щас еще раз проверю

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

Oleg
22.09.2017
21:19:07
Когда ты в цикле по одному элементу добавляешь

Лучше заранее развивать

Dmitry
22.09.2017
21:22:00
а иначе ОС будет из таблицы где зарезервированная память мапить на реальные адреса и это будет время занимать?

Oleg
22.09.2017
21:23:24
Ну или GC

Eto
22.09.2017
21:31:32
Некоторые игры выделяют себе сразу всю память, которая им понадобится, и потом самостоятельно с ней работают, через кастомные аллокаторы.

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