kipar
> В Boehm GC нет никакого анализа.
А его в GC и не должно быть. Это фича компилятора. Пишут, что в llvm что-то такое есть. В любом случае для крестов неактуально. Если ты создаёшь через new объект, который не выходит из функции, значит виноват сам. Впрочем вполне допускаю, что современные крестушки просто фигачат везде make_shared без разбору потому что могут и поэтому не имеют понятия что и где у них утекает и где собирается. И это даже не мешает им думать, что происходит это именно в правильные и заранее известные моменты.
kipar
> Если б там была отдельная куча для молодого поколения - возможно этого эффекта
> бы не было, но ее нет.
Ты сейчас про что?
А, про
>Boehm GC
"Если ехать на машине долго, то она начинает ломаться, после каждых 10 километров надо останавливаться и чинить машину. Если бы мои жигули не ломались, возможно этого эффекта бы не было, но жигули ломаются. Вывод - все ваши автомобили полное говно, мне проще пешком пройти."
9К720
> старый добрый escape-analysis придумали лет 15 назад
Есть у меня такой условный код на Java-подобном языке:
struct A{} struct B { A a; B() { a= new A( ); } } void Foo( ) { B b= new B( ); DoSomething( b.a ); }
Сможет мне твоя JVM выделить "A" на стеке?
Panzerschrek[CN]
> Сможет мне твоя JVM выделить "A" на стеке?
Нет конечно.
>Есть у меня такой условный код
У тебя в последней строчке a отдается непонятно куда.
Я понимаю к чему ты клонишь, но давай, развивай тему. Чтобы тебе самому понятно стало, почему ты несешь херню.
9К720
Нет, вывод - жигули говно, а т.к. иностранные автомобили мне не подходят по другим причинам, то лучше бы отечественные производители велосипеды развивали. Но нет, все туда же, ну кроме Лисичкина со своим ржавомобилем и может совсем маргинальных производителей.
Zefick
В LLVM есть поддержка этого, но сам гц все равно забота авторов языка.
> Если ты создаёшь через new объект, который не выходит из функции, значит виноват сам.
а если объект переменного размера то выбора нет.
Faceroll
Да по-моему это общая проблема.
В руби я на это напоролся. Я не спорю что он и так тормозной, но следить кроме производительности еще и за числом аллокаций это грусть. В Юнити видел такой же эффект, но подробно не разбирался.
Сейчас меня больше кристал беспокоит - хотя там и можно виртуозно обходиться value типами, но нафига эта боль, я бы предпочел следить чтоб циклических ссылок не появлялось.
9К720
> Я понимаю к чему ты клонишь, но давай, развивай тему.
Ссылочные типы - говно, язык на их основе - параша.
/thread
kipar
> иностранные автомобили мне не подходят по другим причинам,
По каким же? Уже который раз пытаюсь получить от тебя ответ. Кроме идеологии есть причины?
kipar
> лучше бы отечественные производители велосипеды развивали
Тут скорее аналогия ближе к лошадиной тяге будет. Лошадь для дикого крест-янина конечно удобнее, дешевле и понятнее. И есть наверняка куча мест, где телега лучше подходит чем машина. Но глупо требовать, чтобы автопроизводители занялись производством карет. Как ты заметил, этот рынок вполне закрывает ОАО ЛисаПламя
И их ржавые кареты особой популярностью не пользуются.
И да, если в деревне под названием "гемдевелопердюйск" дороги позволяют ездить только на лошади, потому что Жигули застревают, а на внедорожники у жителей денег нет - это не проблема автопроизводителей
9К720
> И да, если в деревне под названием "гемдевелопердюйск" дороги позволяют ездить только на лошади, потому что Жигули застревают, а на внедорожники у жителей денег нет - это не проблема автопроизводителей
это проблема местных автопроизводителей. Раз у них (очевидно) нет ресурсов чтобы делать машины уровня гугла и оракла а только уровня жигулей, почему бы не заняться лошадиной тягой.
> По каким же? Уже который раз пытаюсь получить от тебя ответ. Кроме идеологии
> есть причины?
Почему не JVM?
В случае с руби - потому что под JRuby нет большинства игродельских библиотек и вообще большие проблемы с подключением сишных библиотек.
В случае с юнити - потому что под JVM эээ, нет юнити.
В случае с кристаллом - потому что под JVM эээ, нет кристала, а котлин до него по выразительности не дотягивает.
Да и в целом если выбор между "жить с плохим гц" и "осваивать новую экосистему с кучей каких-то легаси кусков и во многом для меня сомнительной идеологией", то я выбираю первое, каких-то киллерфич я у JVM для своих задач не вижу.
kipar
> каких-то киллерфич я у JVM для своих задач не вижу.
Может стоит поменять задачи? Судя по тому, что ты маешься руби и юнити и тебе это не нравится, это давно пора было сделать.
Zefick
На работе я в основном для микроконтроллеров пишу, и там тоже кроме си и раста ничего нет, и тоже гц виноват. Но если куда-то уходить, то только в геймдев, а уж хобби менять с геймдева на что-то только из-за каких-то гц я точно не буду. Просто огорчает что даже язык моей мечты, кристал, тоже с гц, и конечно тоже с убогим (ну это то неудивительно, ведь неубогих гц на свете эээ два? три?).
А мне нравится сборщик мусора. Ну или точнее я не люблю следить за памятью, особенно за чужой.
Тут любимый некоторыми Rust может и как бы не требует сборщика мусора, но он точно также фрагментирует память, как все остальные, что в игрушках часто является серьёзной проблемой.
kipar
На контроллерах нет ничего кроме си (ну кроме некоторой экзотики, как микропитон например (всё собираюсь его потрогать)) потому что на них нет операционной системы, а не из-за сборщиков.
Стандартная библиотека большинства языков не работает без ОС, потому что даже аллокаторов нет.
Кот Зловред
> фрагментирует память, как все остальные, что в игрушках часто является
> серьёзной проблемой.
А двойное разыменование не проблема?
Проблемы с локальностью памяти есть.
В современных операционных системах вообще в принципе невозможно гарантировать стабильное время кадра. Критика сборщиков мусора на таком фоне выглядит как-то несколько странно.
Кот Зловред
> Стандартная библиотека большинства языков не работает без ОС, потому что даже
> аллокаторов нет.
раст же работает. И паскаль с адой. И у остальных языков ее можно портировать (если язык ллвм-ный а не на виртуальной машине) - аллокатор за 200 строк пишется, всякие там файлы и потоки ввода-вывода выкидываем, корутины\треды пишем велосипедные или выкидываем, массивам и хешам ось не нужна. Но гц ставит крест на всей затее.