Aleksei
Aleksei
Anonymous
факт
Vladimir
не так
Так что не так?
Vladimir
как это?
Vladimir
а как тогда можно буфер в пул класть?
Kirill
как это?
вот так это
Kirill
спокойно, как я и написал выше
Kirill
берешь и кладешь
Vladimir
как можно класть в пул буфер, если наружу отдан этот буфер в виде immutable строки?
Kirill
у буфера уберется указатель на строку, а строка останется со значением
Vladimir
Что будет если поменять буфер? Строка поменяется?
Kirill
эта оптимизация применяется не всегда
Kirill
а тогда, когда указатель на данные будет опустошен
Kirill
тогда идет использование в буфере ссылки на новую область памяти при опустошении, а строка смотрит на старый слайс байт
Vladimir
ну то есть когда ты берешь из пула ты не переиспользуешь память?
Vladimir
тогда в чем смысл пула?
Vladimir
Короче, че то ты гонишь. Пойду проверять
Kirill
переиспользую память тогда, когда оптимизатор это даст сделать
Kirill
а промежуточную память переиспользую
Kirill
Короче, че то ты гонишь. Пойду проверять
окей, начни с оптимизатора. пойду работать.
Vladimir
Не, я проверю, что string() не копирует память
Vladimir
Если копирует - то ты гонишь
Kirill
гонщик. то, что происходит в string() все равно оптимизируется.
Vladimir
память либо копируется либо нет
Vladimir
окей, допустим она может не копироваться если нет других ссылок
Vladimir
но в твоем случае они всегда есть
Kirill
слушай, как ты попал в nodejs foundation, если ты контекст не учитываешь?
Vladimir
Какой контекст?
Vladimir
Я все учитываю)
Kirill
контекст выполнения, компиляции, оптимизации несколькими бэкендами и т.д.
Kirill
если у тебя такие вопросы — то ты банально не знаешь, что учитывать
Kirill
а значит, что разговор пустой.
Vlad
мб сразу какашками бросаться?
Vladimir
Сорри, бро. Ты просто вместо того, чтобы объяснить почему твой код работает, начинаешь рассказывать сказки про оптимизацию
Vladimir
Объяснять никто и не заставляет, конечно
Kirill
я выше уже все объяснил подробно, и все нормальные разработчики на go учитывают то, что будет делать оптимизатор, именно поэтому все написано именно так, а не иначе.
Michael
😂😂😂 Моё ледцо каждый раз, когда говорят про оптимизации 😂😂😂
Kirill
мб сразу какашками бросаться?
может быть лучше тогда о хаскеле?
Vladimir
b := []byte{0x66, 0x6f, 0x6f} str := string(b) fmt.Println(str) b[1] = 0x62 fmt.Println(str)
Kirill
аминь
Vladimir
Итак, при string() явно происходит копия
Kirill
буду за него рад, если он сможет
Vladimir
> @kirilldanshin все нормальные разработчики на go учитывают то, что будет делать оптимизатор, Тяжело жить, наверно
Kirill
b := []byte{0x66, 0x6f, 0x6f} str := string(b) fmt.Println(str) b[1] = 0x62 fmt.Println(str)
гонщик 😄 ты же контекст сломал, ясен красен, что будет копия))
Michael
Всё сидите и оптимизируете, кто фичи новые делать-то будет?!
Vladimir
> @kirilldanshin ясен красен, что будет копия)) я не сомневался, в общем то
Vladimir
как и в твоем случае
Aleksei
Да, сегодня читал какой-то коммент, по поводу того, что если ты пишешь на пыхе и подключаешь сяшные утилиты, то ты пишешь на C. Если следовать логике, то все кто пишет на js не пишут на js, а пишут на плюсах
Vladimir
Есть копия, или нет, твой код не эффективен по сравнению с простой сишной реализацией
Kirill
Всё сидите и оптимизируете, кто фичи новые делать-то будет?!
а я вообще ноду выкинул, потому, что там v8, я юзаю spidermonkey с go-monkey, а сюда меня просто позвали)
Michael
Весёлый ты
Anonymous
Всё сидите и оптимизируете, кто фичи новые делать-то будет?!
+++ Круды сами себя не напишут, да и у тёти Сраки с второго этажа админка на эксплорере 6.0 не открываются, а они тут сидят байты ебут
Vladimir
@chicoxyzzy вроде закончили, теперь можно про хаскелль
Aleksei
@chicoxyzzy вроде закончили, теперь можно про хаскелль
Закончили на том, что ты рассудил по своему не прогнав тот и другой вариант и не посмотрев разницу в скорости...
Vladimir
Я верю что оптимизатор иногда может не копировать буфер
Vladimir
Проблема в том что я не вижу логики в коде - либо ты в конце копируешь буффер в строку и тогда ты можешь его переиспользовать, либо ты не копируешь и тогда не можешь переиспользовать
Vladimir
С утверждением, что этот код написан так, чтобы оптимизатор волшебно оптимизировал, сложно спорить
Aleksei
С утверждением, что этот код написан так, чтобы оптимизатор волшебно оптимизировал, сложно спорить
Не волшебно, а по четким правилам, го не v8, там в оптимизаторе нет кельтской магии, которая каждый день меняется
Roman
Ну не бывает волшебных оптимизаторов.
Vlad
на нескольких версиях оптимизатора
Vlad
оптимизируешь на спичках
Vlad
в любом случае на каком-нибудь edge case сломается твоя оптимизация
Vladimir
Просто если абстрагироваться от конкретного кода - как раз вот такие вещи неприемлимы в системном коде
Мерль
Погодите, это какоё-то десткий сад, господа Во-первых
Aleksei
Иногда на спичках, но когда упираешься в скорость конкатенации, это важно, а в других случаях можно просто юзать и все, есть же не просит
Vladimir
bytes.Buffer?
Kirill
А где это можно прочитать?
я вычитывал в коде go, документах и github.com/golang/gofrontend
Мерль
я вычитывал в коде go, документах и github.com/golang/gofrontend
В документации я не нашёл И я прошу прощения, gccgo? Зачем?
Andrey
скажите лучше. что еще почитать по поводу оптимизаций в JS?)
Kirill
В документации я не нашёл И я прошу прощения, gccgo? Зачем?
им собирается 1.4.*, а уже 1.4.* собирается актуальная версия
Vladimir
Только не исходники
Andrey
V8
v8 не маг чудесный, можно писать сильно разный код
Vladimir
А там Егорова того же
Aleksei
v8 не маг чудесный, можно писать сильно разный код
Ну вот почитай v8 и пойми какой код писать. Только не забудь парой бутылок водки запастись))