Size: a a a

2019 December 10

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
Не вижу там не шаринга ни cow
источник

ОХ

Олег Хлевнов in JSNN 🤔 (GSNN)
Я тут специально принт написал, чтобы отвязаться от жс)
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
В любом языке где идёт работа по ссылкам все одинаково. Это почти все современные языки.
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
В общем, оказывается, что строки содержат ссылки на родительские строки! Что??


Ну так это же COW семантика, со строками все так работают
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
Олег, я не знаю куда тебя увела мысль, но вот изначальное сообщение. Ты с ним согласен?
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
Если честно, то я устал воевать с ветряными мельницами.  Я трачу слишком много сил в этом чате. Продолжайте жонглировать словами которые не понимаете, пусть у вас будет свой COW, свои саги, я буду воспринимать этот чат как юмористический.
источник

🧨

🧨 ethorz in JSNN 🤔 (GSNN)
думаю тут много тех, кому просто насрать на все)
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
Sergey Smyshlyaev
Олег, я не знаю куда тебя увела мысль, но вот изначальное сообщение. Ты с ним согласен?
В чем противоречие, пояснишь?
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
Я уже два пруфа привел в исходниках движка
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
У тебя в памяти char[] хранится один раз, а sliced string — это два указателя на области памяти
Соответственно при изменении того участка, происходит реорганизация
Вот Trim, как пример:
https://github.com/v8/v8/blob/4b9b23521e6fd42373ebbcb20ebe03bf445494f9/src/objects/string.cc#L332
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
В общем все, что я хотел сказать: V8 хорош, статья на Хабре — уг
источник

ОХ

Олег Хлевнов in JSNN 🤔 (GSNN)
Sergey Smyshlyaev
Это другое. Copy-on-write это когда у нас иммутабельная коллекция, при записи в которую создаётся полная копия с изменённым полем.
Все так. В контексте разговора -- строка это иммутабельная коллекция чаров, при измененении которой строка копируется. Если мы ее не меняем -- не копируется.

Делается это не только для иммутабельности, но и для того, чтобы можно было экономично копировать объекты НЕ по ссылке. Строчки в жс поменять нельзя, каждый раз создается новая строка и cow на строках тут не работает
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
Nick Shevrov
В чем противоречие, пояснишь?
Противоречие простое: COW - это когда жертвуем памятью ради иммутабельности. Подстроки - экономим память засчёт того что избегаем копирования.
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
Ладно, это уже реально шапито какое-то
источник

ОХ

Олег Хлевнов in JSNN 🤔 (GSNN)
Почему жертвуем? Мы могли бы каждый раз копировать все подряд, вот это были бы жертвы
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
Sergey Smyshlyaev
Противоречие простое: COW - это когда жертвуем памятью ради иммутабельности. Подстроки - экономим память засчёт того что избегаем копирования.
Ничем не жертвуем
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
источник

NS

Nick Shevrov in JSNN 🤔 (GSNN)
Прочитай плиз
источник

SS

Sergey Smyshlyaev in JSNN 🤔 (GSNN)
Прочитал уже давно
источник