Здравствуйте, dr.Chaos, Вы писали:
DC>Здравствуйте, gandjustas, Вы писали:
G>>Да проходили это сотню раз, можно использовать shared_ptr или аналоги, но они замедляют программу, и какой тогда смысл писать на С++? DC>Ну почему же сразу счётчики ссылок? Можно организовать такую схему что мы ничего удалять руками не будем, т.е. в коде будем только выделять память или вообще всё будет крутиться в статических буферах.
Не надо выдумывать небылицы. Хоть один серьезный продукт так написан?
DC>Если мы перекладываем управление на железку вполне логично что это требует ресурсов, оверхед от счётчиков небольшой, время освобождения ресурса детерминировано.
Счетчики ссылок требуют синхронизации, что сказывается на производительности в многопоточных системах. Кроме того они слабо умеют разаруливать циклические ссылки.
G>>Может, но не оказывается. Ты вряд ли придумаешь сценарий работы с памятью, где GC будет сливать ручному управлению в быстродействию. DC>Да я и искать то не буду, GC дотнетовский хорош, но он заточен на вполне определённый круг сценариев работы (ну нельзя впихнуть невпихуемое), как только мы натыкаемся на такой сценарий, начинается борьба с GC, её можно облегчить сделав GC расширяемым, но про такое я ещё не слышал.
В том то и дело что GC, по крайней мере в .NET, рассчитан на огромное число сценариев работы. Главное ему не мешать, и уж тем более не пытться помогать.
DC>А в плюсах всё просто — не нравится автобус, взял написал горный велосипед и поехал по горным тропам .
На словах просто, а на деле большое количество велосипедов делаю очень тяжелой поддержку. При этом далеко не факт что кучи велосипедов будут работать быстрее GC.
Здравствуйте, dr.Chaos, Вы писали:
DC>Здравствуйте, gandjustas, Вы писали:
G>>Еще раз: хаки не нтересуют, интересует общий способ, как в моем примере на шарпе. DC>Да, тебя, кажется, вообще C++ не интересует, как и то что его помощью сделать можно.
Ну если бы не интересовал, то я бы сюда не писал.
А если че — я в течение 5 лет писал на С++.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, dr.Chaos, Вы писали:
DC>>Здравствуйте, gandjustas, Вы писали:
G>>>Да проходили это сотню раз, можно использовать shared_ptr или аналоги, но они замедляют программу, и какой тогда смысл писать на С++? DC>>Ну почему же сразу счётчики ссылок? Можно организовать такую схему что мы ничего удалять руками не будем, т.е. в коде будем только выделять память или вообще всё будет крутиться в статических буферах. G>Не надо выдумывать небылицы. Хоть один серьезный продукт так написан?
G>>>>Да проходили это сотню раз, можно использовать shared_ptr или аналоги, но они замедляют программу, и какой тогда смысл писать на С++? DC>>>Ну почему же сразу счётчики ссылок? Можно организовать такую схему что мы ничего удалять руками не будем, т.е. в коде будем только выделять память или вообще всё будет крутиться в статических буферах. G>>Не надо выдумывать небылицы. Хоть один серьезный продукт так написан?
J>дофига.
Перефразирю: серьезный не заваленный по срокам и не глючный продукт.
Здравствуйте, criosray, Вы писали:
C>Здравствуйте, jazzer, Вы писали:
G>>>>>Да проходили это сотню раз, можно использовать shared_ptr или аналоги, но они замедляют программу, и какой тогда смысл писать на С++? DC>>>>Ну почему же сразу счётчики ссылок? Можно организовать такую схему что мы ничего удалять руками не будем, т.е. в коде будем только выделять память или вообще всё будет крутиться в статических буферах. G>>>Не надо выдумывать небылицы. Хоть один серьезный продукт так написан?
J>>дофига.
C>Перефразирю: серьезный не заваленный по срокам и не глючный продукт.
Здравствуйте, gandjustas, Вы писали:
G>>>Да проходили это сотню раз, можно использовать shared_ptr или аналоги, но они замедляют программу, и какой тогда смысл писать на С++? DC>>Ну почему же сразу счётчики ссылок? Можно организовать такую схему что мы ничего удалять руками не будем, т.е. в коде будем только выделять память или вообще всё будет крутиться в статических буферах. G>Не надо выдумывать небылицы. Хоть один серьезный продукт так написан?
Нормальная практика у игроделов, используется несколько пулов памяти (глобальный, на уровень, временный) динамическое выделение вне пулов не происходит совсем, освобождение практически тоже при завершеннии программы. Подробнее тут http://www.dtf.ru/articles/print.php?id=4071
У эмдебщиков все еще жестче.
Здравствуйте, VoidEx, Вы писали:
J>>>дофига.
C>>Перефразирю: серьезный не заваленный по срокам и не глючный продукт.
VE>Ответ тебе тоже перефразировать или он и так понятен?
Нет. Не понятен. Названия / ссылки в студию, как говорится.
Здравствуйте, criosray, Вы писали:
VE>>Ответ тебе тоже перефразировать или он и так понятен?
C>Нет. Не понятен. Названия / ссылки в студию, как говорится.
Ссылка практически на любую крупную игру которая идет на игровых консолях.
Здравствуйте, FR, Вы писали:
VE>>>Ответ тебе тоже перефразировать или он и так понятен?
C>>Нет. Не понятен. Названия / ссылки в студию, как говорится.
FR>Ссылка практически на любую крупную игру которая идет на игровых консолях.
FR>>Ссылка практически на любую крупную игру которая идет на игровых консолях.
C>Кроме игр на консолях?
Приложения для недокомпьютеров работающих под операционками подобными PowerTV,
без виртуальной памяти ссылок нет, например мы писали под подобное устройство
программы работы с графикой и портировали казуальные игры.
Здравствуйте, FR, Вы писали:
FR>>>Ссылка практически на любую крупную игру которая идет на игровых консолях.
C>>Кроме игр на консолях?
FR>Приложения для недокомпьютеров работающих под операционками подобными PowerTV, FR>без виртуальной памяти ссылок нет, например мы писали под подобное устройство FR>программы работы с графикой и портировали казуальные игры.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, gandjustas, Вы писали:
G>>>>Да проходили это сотню раз, можно использовать shared_ptr или аналоги, но они замедляют программу, и какой тогда смысл писать на С++? DC>>>Ну почему же сразу счётчики ссылок? Можно организовать такую схему что мы ничего удалять руками не будем, т.е. в коде будем только выделять память или вообще всё будет крутиться в статических буферах. G>>Не надо выдумывать небылицы. Хоть один серьезный продукт так написан?
FR>Нормальная практика у игроделов, используется несколько пулов памяти (глобальный, на уровень, временный) динамическое выделение вне пулов не происходит совсем, освобождение практически тоже при завершеннии программы. Подробнее тут http://www.dtf.ru/articles/print.php?id=4071
глобальный, на уровень, временный... чем-то на GC с его тремя поколениями похоже.
Еще давно прочитал афоризм, что любая большая программа на С содержит не менее 30% реализации Lisp.
FR>У эмдебщиков все еще жестче.
Там где идут жесткие ограничения начинается совсем другая работа.
Сам разрабатывал для dsp-процессоров, большую часть времени убил на то как впихнуть восьмикилобайтный буфер в два килобайта.
Здравствуйте, criosray, Вы писали:
C>Здравствуйте, VoidEx, Вы писали:
C>>>Ок. Что на счет полноценных компьютеров — PC?
VE>>Можно сразу список всех условий?
C>Условие одно: нормальные условия, а не какая-то экзотика. А то давайте еще особенности программирования микроконтролеров обсудим.
А тебе этого недостаточно?
Вопрос, напоминаю, звучал так: "Не надо выдумывать небылицы. Хоть один серьезный продукт так написан?"
Ответ дан, с примерами: тысячи серьезных продуктов.
На каких они платформах — дело десятое.
Так что если опровержения по сути (а не "мне твой пример не нравится, придумай другой") не предвидится, то вопрос закрыт.
Здравствуйте, criosray, Вы писали:
C>>>Ок. Что на счет полноценных компьютеров — PC?
VE>>Можно сразу список всех условий?
C>Условие одно: нормальные условия, а не какая-то экзотика. А то давайте еще особенности программирования микроконтролеров обсудим.
Безотносительно к спору, то есть оффтоп(хотя, в этом форуме можно и не предупреждать).
Вот у меня дома сейчас ноут с линухом, обычный комп с виндой, телефон с симбианом, 3 разных портативных плеера с хз чем, DVD-проигрыватель, телик(пусть и не юзается, но есть), POS-терминал(тестовый, с работы). У обычного компа есть еще монитор с собственной независимой настройкой(т.е. там есть определенное ПО). А, еще где-то в закромах Sega валяется, иногда ностальгируем.
Все эти устройства содержат ПО. К "нормальным" по твоему критерию можно отнести комп с виндой, ну, может, еще ноут. Что в общем зачете не так уж и много.
А теперь вопрос, почему мы обязательно должны опускать программинг под все эти девайсы? В реальной жизни такое ПО используется очень активно.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
2 gandjustas:
C чем не согласен-то?
Или мой ответ тоже просто не нравится, без аргументов?
Тебе сказали: "Есть техника А".
Ты сказал, что этой техникой всерьез не пользуется, и попросил привести примеры обратного.
Тебе их привели.
После этого, в принципе, действительно есть только два пути: либо согласиться, что тебе на вопрос ответили и ты был неправ, либо молча раздавать минусы.
Жаль, что ты выбрал второе.
Здравствуйте, gandjustas, Вы писали:
G>Не надо выдумывать небылицы. Хоть один серьезный продукт так написан?
Ну ту мне добавить к ответам других особо нечего .
DC>>Если мы перекладываем управление на железку вполне логично что это требует ресурсов, оверхед от счётчиков небольшой, время освобождения ресурса детерминировано. G>Счетчики ссылок требуют синхронизации, что сказывается на производительности в многопоточных системах. Кроме того они слабо умеют разаруливать циклические ссылки.
Ну многопоточный GC тоже требует накладных расходов на синхронизацию, кроме того если у меня будет затык именно в синхронизации счётчиков, то я вполне могу убрать его нафиг и управлять вручную. Да и, честно говоря, разделять объект между двумя нитями не самая хорошая идея, я бы даже при наличии GC так делать по-возможности не стал.
G>В том то и дело что GC, по крайней мере в .NET, рассчитан на огромное число сценариев работы. Главное ему не мешать, и уж тем более не пытться помогать.
Ну точно помню, что Cyberaxe говорил что он со свапом не дружит. Вот тут про картинки речь шла. Вобщем, я не настолько хорошо знаю его особенности чтоб предметно обсуждать его узкие места, но ручное управление памятью он не обойдёт, правда управлять памятью вручную дороже.
G>На словах просто, а на деле большое количество велосипедов делаю очень тяжелой поддержку. При этом далеко не факт что кучи велосипедов будут работать быстрее GC.
Велосипед может не претендовать на универсальность, и за счёт этого быть простым и быстрым или распадаться на несколько простых вариантов, которые могут быть довольно просты в поддержке. Только использование всего этого зоопарка, вероятнее, будет требовать большей аккуратности, чем просто дать всё на откуп GC, правда в умелых руках и GC может просесть.
Я, вообще, о чём говорил: отсутствие GC не самая большая проблема C++.
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы