Re[8]: Язык Go - слабые стороны
От: vsb Казахстан  
Дата: 16.02.22 07:58
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>>>Или, например, если мы от мегабайтного слайса отсубслайсим 5 байт, а про остальное "забудем", в памяти все равно будет занят мегабайт, потому что отсубслайсенные 5 байт все равно указывают на мегабайтный буфер, и GC его не приберет. Наивная идея организовать очередь, дописывая в конец слайса и откусывая от начала породит конструкцию, которая в конце концов сожрет всю память. Ну и т.д.


O>>Ты так рассказываешь, как будто это чтото хорошее.


Pzz>Я так рассказываю, как будто это то, что есть. А хорошее оно или плохое, пусть каждый решает в меру своих потребностей.


Забавный факт. В жаве кажется до 8 версии substring работал именно так: был один общий массив символов и offset/length. Т.е. маленькая строка могла внутри держать массив на мегабайт, к примеру. Но потом поменяли на копирование.

Но в целом я думаю, что поведение go лучше. Программист сам должен понимать, когда данные надо копировать, а по умолчанию оно должно работать максимально быстро. Скажем сейчас в Java невозможно повторить то поведение (без написания своего класса String).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.