
Vladimir
25.09.2016
20:35:07
В сишке ты бы один раз выделил память
Что не так?

Kirill
25.09.2016
20:35:32

Ҫѐҏӗѫӑ
25.09.2016
20:35:34
давайте сразу про хаскель

Google

Ҫѐҏӗѫӑ
25.09.2016
20:35:38
чего тянуть

Vladimir
25.09.2016
20:35:39
Попозже

Kirill
25.09.2016
20:35:45

Aleksei
25.09.2016
20:36:05

Ҫѐҏӗѫӑ
25.09.2016
20:36:11
факт

Vladimir
25.09.2016
20:37:42

Мерлин
25.09.2016
20:38:32

Vladimir
25.09.2016
20:38:41
как это?
а как тогда можно буфер в пул класть?

Kirill
25.09.2016
20:40:25
спокойно, как я и написал выше
берешь и кладешь

Vladimir
25.09.2016
20:40:58
как можно класть в пул буфер, если наружу отдан этот буфер в виде immutable строки?

Google

Kirill
25.09.2016
20:41:11
у буфера уберется указатель на строку, а строка останется со значением

Vladimir
25.09.2016
20:41:43
Что будет если поменять буфер? Строка поменяется?

Kirill
25.09.2016
20:42:19
эта оптимизация применяется не всегда
а тогда, когда указатель на данные будет опустошен
тогда идет использование в буфере ссылки на новую область памяти при опустошении, а строка смотрит на старый слайс байт

Vladimir
25.09.2016
20:43:35
ну то есть когда ты берешь из пула ты не переиспользуешь память?
тогда в чем смысл пула?
Короче, че то ты гонишь. Пойду проверять

Kirill
25.09.2016
20:44:42
переиспользую память тогда, когда оптимизатор это даст сделать
а промежуточную память переиспользую

Vladimir
25.09.2016
20:45:38
Не, я проверю, что string() не копирует память
Если копирует - то ты гонишь

Kirill
25.09.2016
20:46:15
гонщик. то, что происходит в string() все равно оптимизируется.

Vladimir
25.09.2016
20:46:36
память либо копируется либо нет
окей, допустим она может не копироваться если нет других ссылок
но в твоем случае они всегда есть

Kirill
25.09.2016
20:47:22
слушай, как ты попал в nodejs foundation, если ты контекст не учитываешь?

Vladimir
25.09.2016
20:47:36
Какой контекст?
Я все учитываю)

Google

Kirill
25.09.2016
20:48:42
контекст выполнения, компиляции, оптимизации несколькими бэкендами и т.д.
если у тебя такие вопросы — то ты банально не знаешь, что учитывать
а значит, что разговор пустой.

Vladimir
25.09.2016
20:49:27
мб сразу какашками бросаться?

Vladimir
25.09.2016
20:50:01
Сорри, бро. Ты просто вместо того, чтобы объяснить почему твой код работает, начинаешь рассказывать сказки про оптимизацию
Объяснять никто и не заставляет, конечно

Kirill
25.09.2016
20:51:56
я выше уже все объяснил подробно, и все нормальные разработчики на go учитывают то, что будет делать оптимизатор, именно поэтому все написано именно так, а не иначе.

マイク
25.09.2016
20:52:23
???
Моё ледцо каждый раз, когда говорят про оптимизации
???

Kirill
25.09.2016
20:52:28

Vladimir
25.09.2016
20:53:03
b := []byte{0x66, 0x6f, 0x6f}
str := string(b)
fmt.Println(str)
b[1] = 0x62
fmt.Println(str)

Kirill
25.09.2016
20:53:11
аминь

Vladimir
25.09.2016
20:53:20
Итак, при string() явно происходит копия

Kirill
25.09.2016
20:53:37
буду за него рад, если он сможет

Vladimir
25.09.2016
20:53:44
> @kirilldanshin
все нормальные разработчики на go учитывают то, что будет делать оптимизатор,
Тяжело жить, наверно

Kirill
25.09.2016
20:54:08

マイク
25.09.2016
20:54:27
Всё сидите и оптимизируете, кто фичи новые делать-то будет?!

Vladimir
25.09.2016
20:54:46
> @kirilldanshin
ясен красен, что будет копия))
я не сомневался, в общем то
как и в твоем случае

Aleksei
25.09.2016
20:55:15
Да, сегодня читал какой-то коммент, по поводу того, что если ты пишешь на пыхе и подключаешь сяшные утилиты, то ты пишешь на C. Если следовать логике, то все кто пишет на js не пишут на js, а пишут на плюсах

Vladimir
25.09.2016
20:55:38
Есть копия, или нет, твой код не эффективен по сравнению с простой сишной реализацией

Google

Kirill
25.09.2016
20:55:39

マイク
25.09.2016
20:56:07
Весёлый ты

Кисик
25.09.2016
20:56:11

Vladimir
25.09.2016
20:57:35
@chicoxyzzy вроде закончили, теперь можно про хаскелль

Admin
ERROR: S client not available

Aleksei
25.09.2016
20:59:23

Vladimir
25.09.2016
20:59:59
Я верю что оптимизатор иногда может не копировать буфер
Проблема в том что я не вижу логики в коде - либо ты в конце копируешь буффер в строку и тогда ты можешь его переиспользовать, либо ты не копируешь и тогда не можешь переиспользовать
С утверждением, что этот код написан так, чтобы оптимизатор волшебно оптимизировал, сложно спорить

Aleksei
25.09.2016
21:02:50

Roman
25.09.2016
21:03:05
Ну не бывает волшебных оптимизаторов.

Vladimir
25.09.2016
21:04:20
на нескольких версиях оптимизатора
оптимизируешь на спичках
в любом случае на каком-нибудь edge case сломается твоя оптимизация

Vladimir
25.09.2016
21:05:49
Просто если абстрагироваться от конкретного кода - как раз вот такие вещи неприемлимы в системном коде

Мерлин
25.09.2016
21:05:59
Погодите, это какоё-то десткий сад, господа
Во-первых

Aleksei
25.09.2016
21:06:47
Иногда на спичках, но когда упираешься в скорость конкатенации, это важно, а в других случаях можно просто юзать и все, есть же не просит

Vladimir
25.09.2016
21:08:28
bytes.Buffer?

Google

Kirill
25.09.2016
21:08:45

Мерлин
25.09.2016
21:11:00

Andrey
25.09.2016
21:11:12
скажите лучше. что еще почитать по поводу оптимизаций в JS?)

Aleksei
25.09.2016
21:11:35

Kirill
25.09.2016
21:12:00

Aleksei
25.09.2016
21:12:18

Vladimir
25.09.2016
21:12:28
Только не исходники

Andrey
25.09.2016
21:12:34
V8
v8 не маг чудесный, можно писать сильно разный код

Vladimir
25.09.2016
21:12:37
А там Егорова того же

Aleksei
25.09.2016
21:13:33

Мерлин
25.09.2016
21:13:39

Kirill
25.09.2016
21:14:04

Мерлин
25.09.2016
21:14:47

Kirill
25.09.2016
21:16:17
яннп
Не мог бы перефразировать для тупых?
Какая основа?
все встроенные типы, например, описаны именно тут. тут же можно встроить новые, если хочется упороться и есть пара бутылок водки. тут же можно ознакомиться со всеми подкоробочными нюансами, а потом идти уже в репу go читать то, что будет работать поверх этой всей кучи кода.

Andrey
25.09.2016
21:17:54