ПК>If you look at the actual cost of garbage collecting, that's not collecting that memory that you've allocated, typically a GC of Generation 0 is similar to that of a page fault, so it's fairly cheap. If you look at the actual time that a Generation 0 garbage collection takes, it's typically between 0 and 10 milliseconds, which is fairly short. And then a collection of Generation 1 is typically between 10 and 30 milliseconds. Obviously, the GC of Generation 2 is going to be dependent on what your working set it, but full GCs should not happen that often.
Ты бы хоть читал внимтельно. Да и ссылки на доисторические статьи давать не очень разумно. Есть статьи и по новее, где цифорки намного скромнее. Плюс надо понимать, что это цифры в рассчете на компьютер удовлетворящий минимальным требованиям, и цифры эти получаются при самых скромынх раскладах.
В любом случае выделение памяти в фрагментированном хипе может занять куда большее время. Но про это почиму-то никто не вспоминает.
Так что оставь сказаки про ЖЦ тем кто никогда с ним не сталкивался лично. На практике заметить сборку мусора на глаз невозможно в принципе.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, McSeem2, Вы писали:
MS>Здравствуйте, VladD2, Вы писали:
VD>>Сборка мусора в среднем занимает около 10 милесекунд с интервалом несколько секунд. А то и реже/быстрее.
MS>Уупс. Целых 10 миллисекунд?! Куда столько?! — этож почти целый кадр.
Это при самых худших обстоятельствах и на довольно дохлом железе. Да и один кадр из 100 мало кто заметит. Выделяя память в сильно фрагментированном хипе можно получить куда более ощутимые тормоза, и вроде как это никому сильно не мешает.
Часто происходит только сборка нулевого поколения. А она в 99% случае укладывается в микросекунды.
MS> Как говорится в малоизвестном стишке "вы охренели, братья румыны". За 10 миллисекунд я успеваю чисто софтварно отрендерить целую страницу мелкого текста (и Adobe Acrobat, кстати, тоже успевает).
Акробат пока не может. Особенно чисто софтрверно. Если бы в сотвере можно было выдавать 100 кадров в секунду, да еще и мелким текстом, то 3D-акселераторы были бы и нафиг не нужны.
MS>Может все-таки, 10 микросекунд?
Это уже сравнимо с тактами процессора. И такие результаты могут быть только в нулевом поколении, объем памяти которого подгоняется под размер кэша процессора.
PS
И все же, скачай таки ArenaWarsDemoEnglishAndGerman.exe и поиграй пору часиков. Заметишь хоть одну паузу, расскажи. Ну, а если не заметишь то перестань дезинформировать людей повторяя глупость про ЖЦ раз за разом.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
MS>>Может все-таки, 10 микросекунд?
VD>Это уже сравнимо с тактами процессора. И такие результаты могут быть только в нулевом поколении, объем памяти которого подгоняется под размер кэша процессора.
Да не особо. 2 ГГц, 10 микросекунд — это 20000 тактов, не так уж и мало.
VD>PS VD>И все же, скачай таки ArenaWarsDemoEnglishAndGerman.exe и поиграй пору часиков. Заметишь хоть одну паузу, расскажи. Ну, а если не заметишь то перестань дезинформировать людей повторяя глупость про ЖЦ раз за разом.
В ответ на это я процитирую извесный мультик
- Поздравляю тебя, Шарик. Ты балбес...
Кого это я когда-либо дезинформировал насчет "ЖЦ"?! Кстати, что такое "ЖЦ"? А игрушку не хочу — там регистрироваться заставляют. Есть где-нибудь линк без регистрации?
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Переадресую твое пожелание тебе же. Речь шла не о нулевом поколении, цифирки для которого ты так любезно подсветил, а о первом и втором:
> ПК>Нет, именно миллисекунд. И это не потолок, скорее, характерное время для сбора мусора первого поколения. Сбор объектов поколения 2 может занять значительно дольше.
> ПК>a collection of Generation 1 is typically between 10 and 30 milliseconds.
> Да и ссылки на доисторические статьи давать не очень разумно. Есть статьи и по новее, где цифорки намного скромнее.
На сколько "намного"? В два, три раза? Это не "намного", т.к. 5-15 или 3-10 это по-прежнему пропуск кадра. И это при сборке первого поколения. Сборка второго поколения, которой без ручной оптимизации работы с памятью в реальной игре не избежишь, будет заметно подольше.
> В любом случае выделение памяти в фрагментированном хипе может занять куда большее время. Но про это почиму-то никто не вспоминает.
И правильно делает, т.к. для уменьшения фрагментации кучи давным-давно есть масса распределителей памяти, замечательно с этим справляющихся.
> Так что оставь сказаки про ЖЦ тем кто никогда с ним не сталкивался лично.
Здравствуйте, Павел Кузнецов, Вы писали:
>> Так что оставь сказаки про ЖЦ тем кто никогда с ним не сталкивался лично.
ПК>http://blacklight.h1.ru/oppo09.htm ПК>
Демагогия с переходом на личности
ПК>d. Обвинение оппонента в незнании предмета обсуждения
Демагогия это твои слова. Кончай ее и таки попробуй скачать и запустить ту игрушку. Слушать эту галематью про "паузу" уже сильно надоело.
ЗЫ
И кончай чуть что прикрываться переходом на личности. А то уже тоже не смешо... лбое утверждение о твоей неправоте ты сразу объявляешь переходом на твои личности.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, McSeem2, Вы писали:
MS>Да не особо. 2 ГГц, 10 микросекунд — это 20000 тактов, не так уж и мало.
Минимальные требования для дотнета — это PII 450. Так что на 2 ГГц — это будет где-то менее 2.5 милисек. И опять же в худшем случае, плюс раз в квартал.
VD>>PS VD>>И все же, скачай таки ArenaWarsDemoEnglishAndGerman.exe и поиграй пору часиков. Заметишь хоть одну паузу, расскажи. Ну, а если не заметишь то перестань дезинформировать людей повторяя глупость про ЖЦ раз за разом.
MS>В ответ на это я процитирую извесный мультик MS>
MS> — Поздравляю тебя, Шарик. Ты балбес...
Ну, это уже откровенное оскорбление. Этак я тебе магу таких цитат привести, что оптекать затрахашся.
MS>Кого это я когда-либо дезинформировал насчет "ЖЦ"?!
Извиняюсь, я отвечал параллельно на два поста. Это были слова обращенные к ПК. Он уже тут очень долго расказывает сказку о "паузах" взыванных ЖЦ и вообще о невозможности создания игр из-за наличия ЖЦ.
MS> Кстати, что такое "ЖЦ"?
GC (сборщик мусора).
MS> А игрушку не хочу — там регистрироваться заставляют. Есть где-нибудь линк без регистрации?
Я качал без регистрации. Ссылок там выше крыши.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
В чем именно? Я, например, ссылку дал с объяснением, что именно меня не устраивает в твоем сообщении.
> попробуй скачать и запустить ту игрушку. Слушать эту галематью про "паузу" уже сильно надоело.
Как бы она ни работала, это ничего не скажет относительно верности утверждения
, к которому ты прицепился, т.к. мы понятия не имеем, не используется ли в игре ручное распределение памяти.
если реализовать все критичные действия по работе с памятью вручную, как, например, это сделано в Quake, то можно эти эффекты свести к минимуму
> И кончай чуть что прикрываться переходом на личности. А то уже тоже не смешо... лбое утверждение о твоей неправоте ты сразу объявляешь переходом на твои личности.
Discussion tries to prove what is right; an argument tries to prove who is right.
К тому же, утверждение "о неправоте" от утверждения "о недостаточности компетенции" отличается вполне заметно. Да и подмену опровержения аргументации оппонента переходом к обсуждению его компетентности не заметить тоже сложно.
Так что если не хочешь, чтобы я регулярно напоминал тебе о рамках корректного ведения дискуссии, удерживайся в них самостоятельно.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
VladD2,
> MS> Да не особо. 2 ГГц, 10 микросекунд — это 20000 тактов, не так уж и мало.
> Минимальные требования для дотнета — это PII 450. Так что на 2 ГГц — это будет где-то менее 2.5 милисек. И опять же в худшем случае, плюс раз в квартал.
Т.е. сборка 1-го поколения — 2.5 — 7.5 миллисекунд. Все равно в среднем потеря кадра, т.к. времена сравнимы с временем пересчета состояния + отрисовки. Хотя уже, конечно, заметно лучше. К сожалению, при сборке второго поколения все равно будет заметные пользователю паузы (подергивания).
> ПК. Он уже тут очень долго расказывает сказку о "паузах" взыванных ЖЦ и вообще о невозможности создания игр из-за наличия ЖЦ.
Не о невозможности, а об определенных проблемах разработки. Никто не говорит, что эти проблемы не решаемы. Вопрос только в том, что разработчики предпочитают: решать эти плюс прочие проблемы, скажем, C#, или другие, связанные с использованием других языков. Все дела
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Павел Кузнецов, Вы писали:
ПК>Т.е. сборка 1-го поколения — 2.5 — 7.5 миллисекунд.
Я уже кажется говорил, что слова о 30 мелисекундах — это неверная информация. К тому же хочу заметить, что на сегодня современный компьютер идет 3 ГГц процессором (у меня лично AMD 3500+, и вроде бы тендерция идет только к ускорению процессоров), да и память ресколько шустрее чем на PII (все же минимум 800 мегагерц против 66).
ПК> Все равно в среднем потеря кадра, т.к. времена сравнимы с временем пересчета состояния + отрисовки. Хотя уже, конечно, заметно лучше. К сожалению, при сборке второго поколения все равно будет заметные пользователю паузы (подергивания).
Все слава про подергивание не соотвествуют действительности. Я уже устал повторять: Скачай игру поиграй.
Кадры выпадают в любой игре. И не по одному, а тысячами. 10 милисек — это потеря сотого кадра. Учитывая что таких затраты времени возникают очень редко, ты никогда в жизни не заметишь пропуска этого кадра. Намного более вероятным будет пропуск кадров в связи с недостаточной скоростью видиокарты/процессора или выполнением некой ресурсоемкой операции.
ПК>Не о невозможности, а об определенных проблемах разработки.
Это выдуманные проблемы. Они могут возникнуть только на очень дохлой технике.
ПК> Никто не говорит, что эти проблемы не решаемы.
Интересно как можно решить проблемы дерганья картинки вызванные базовым рантаймом?
ПК> Вопрос только в том, что разработчики предпочитают: решать эти плюс прочие проблемы, скажем, C#, или другие, связанные с использованием других языков. Все дела
Проблема в том, что кто-то основываясь на не очень проверенной информации и своих преудбеждениях делает заявления неимеющие ничего общего с реальной действительностью.
Проблемы у ЖЦ есть. Но ты о них ни разу не упомянул. Зато постоянно повторешь одни и теже неверные утверждения.
В общем, глаза у тебя есть. Скачай игру убедись, что никакого дерганья нет. А в том, что игра польностью менеджед можно убидиться декомпилятором.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Павел Кузнецов, Вы писали:
ПК>Serginio1,
>> ПК> если реализовать все критичные действия по работе с памятью вручную, как, например, это сделано в Quake, то можно эти эффекты свести к минимуму. Вопрос только в стоимости разработки с ручным управлением памятью на системе, для этого не предназначенной.
>> Выход в создании своего менеджера памяти с использованием валуе типов (массивов байт). Все зависит от задачи и нормально решаемо.
ПК>Гм... В чем здесь противоречие с выделенным?
В Том, что в Net вполне для этого пригодна правда с ограничениями на ссылочные типы.
и солнце б утром не вставало, когда бы не было меня
Serginio1,
>>> ПК> если реализовать все критичные действия по работе с памятью вручную, как, например, это сделано в Quake, то можно эти эффекты свести к минимуму. Вопрос только в стоимости разработки с ручным управлением памятью на системе, для этого не предназначенной.
>>> Выход в создании своего менеджера памяти с использованием валуе типов (массивов байт). Все зависит от задачи и нормально решаемо.
> ПК>Гм... В чем здесь противоречие с выделенным?
> В Том, что в Net вполне для этого пригодна правда с ограничениями на ссылочные типы.
А как будет происходить создание/удаление объектов? Через MyAllocator.new()/MyAllocator.delete()? IMHO, без детерминированных деструкторов и возможности перегрузки operator new "ручная" работа с памятью значительно осложняется...
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
>> В Том, что в Net вполне для этого пригодна правда с ограничениями на ссылочные типы.
ПК>А как будет происходить создание/удаление объектов? Через MyAllocator.new()/MyAllocator.delete()? IMHO, без детерминированных деструкторов и возможности перегрузки operator new "ручная" работа с памятью значительно осложняется...
Можно и через TMyAllocator.Create TMyAllocator.Free
Так или иначе даже при хорошем менеджере памяти, создание своего специально заточенного под определенный размер менеджера памяти вполне тривиальная задача и в нативе.
Да и например Борландовский менеджер достаточно прост, что бы перенести его алгоритм для хранение валуе типов в нет.
и солнце б утром не вставало, когда бы не было меня
Serginio1,
> ПК> А как будет происходить создание/удаление объектов? Через MyAllocator.new()/MyAllocator.delete()? IMHO, без детерминированных деструкторов и возможности перегрузки operator new "ручная" работа с памятью значительно осложняется...
> Можно и через TMyAllocator.Create TMyAllocator.Free > Так или иначе даже при хорошем менеджере памяти, создание своего специально заточенного под определенный размер менеджера памяти вполне тривиальная задача и в нативе.
Я, наверное, недостаточно четко расставил акценты. Самой важной является выделенная часть. Именно это я и имел в виду ранее, говоря о "стоимости разработки с ручным управлением памятью на системе, для этого не предназначенной". В этом смысле, имхо, самым хорошим решением было бы сочетание плюсов от обоих миров: GC + средства для "ручного" управления памятью в виде детерминированных деструкторов и т.п. На первый взгляд в этом отношении C++/CLI кажется вполне удачным вариантом.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
ПК>Я, наверное, недостаточно четко расставил акценты. Самой важной является выделенная часть. Именно это я и имел в виду ранее, говоря о "стоимости разработки с ручным управлением памятью на системе, для этого не предназначенной". В этом смысле, имхо, самым хорошим решением было бы сочетание плюсов от обоих миров: GC + средства для "ручного" управления памятью в виде детерминированных деструкторов и т.п. На первый взгляд в этом отношении C++/CLI кажется вполне удачным вариантом.
Полностью согласен.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Павел Кузнецов, Вы писали:
ПК>В чем именно? Я, например, ссылку дал с объяснением, что именно меня не устраивает в твоем сообщении.
Вот и прочел бы свою ссылку. Она как раз хорошо твои действия описывает.
>> попробуй скачать и запустить ту игрушку. Слушать эту галематью про "паузу" уже сильно надоело.
ПК>Как бы она ни работала, это ничего не скажет относительно верности утверждения
, к которому ты прицепился, т.к. мы понятия не имеем, не используется ли в игре ручное распределение памяти.
Снова сфероконики? Игра написана на чистом шарпе. Возми Рефлектор (декомпайлер) и убедись в этом лично. Там несколько сборок чистого дотнетного кода. Все импорты там перечислены.
ПК>
ПК>Discussion tries to prove what is right; an argument tries to prove who is right.
И цитататы на английском тоже кончай сувать. Я их лично даже не буду пытаться переводить. Уж на русском форуме я хочу видеть русский текст. Мне и так хватает чего по английски читать.
ПК>К тому же, утверждение "о неправоте" от утверждения "о недостаточности компетенции" отличается вполне заметно. Да и подмену опровержения аргументации оппонента переходом к обсуждению его компетентности не заметить тоже сложно.
Зато ее очень удобно подмечать там где ее нет.
ПК>Так что если не хочешь, чтобы я регулярно напоминал тебе о рамках корректного ведения дискуссии, удерживайся в них самостоятельно.
В прошлом сообщении небыло и намека на твою компетенцию. Там был намек на втюхивание неверной информации. А то что ты на отрез отказывашся убидиться в своей неправоте наводит на мысль о намеренности этого втюхивания.
Еще раз повторюсь, что твои утверждения касательно невозможности приме
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Павел Кузнецов, Вы писали:
ПК>"Ручной" работой с памятью.
Как ты себе видишь "ручную" работу с менеджед-типами?
>> в том, что игра польностью менеджед можно убидиться декомпилятором.
ПК>Кстати, посмотреть декомпилятором, как именно там организована работа с памятью — хорошая идея.
Да нет там работы с памятью. Память боле не ресурс.
Декомпайлер тебе поможет убедиться, что весь проект создан с использовнием обычных менеджед-структур-данных, а стало быть память управляется ЖЦ.
ЗЫ
Я правильно понял, что игрушку ты уже скачал? Таки уже большой сдвиг.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Минимальные требования для дотнета — это PII 450. Так что на 2 ГГц — это будет где-то менее 2.5 милисек. И опять же в худшем случае, плюс раз в квартал.
Фреймворк 1.1, янус в стабильном состоянии, AthlonXP 2.1ГГц. Сборка нулевого поколения 100-130 микросекунд. Сборка в самом тяжелом состоянии — 240 микросекунд.
AndrewVK,
> Фреймворк 1.1, янус в стабильном состоянии, AthlonXP 2.1ГГц. Сборка нулевого поколения 100-130 микросекунд. Сборка в самом тяжелом состоянии — 240 микросекунд.
А первого и второго?
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Павел Кузнецов, Вы писали:
>> Фреймворк 1.1, янус в стабильном состоянии, AthlonXP 2.1ГГц. Сборка нулевого поколения 100-130 микросекунд. Сборка в самом тяжелом состоянии — 240 микросекунд.
ПК>А первого и второго?