Войти
ФлеймФорумПрограммирование

Оперативная/не оперативная, RAM/не RAM, а так же иннуендо-фрагментация. (43 стр)

Страницы: 142 43 44 45 46 Следующая »
#630
15:47, 25 июля 2017

exchg
> Т.к. даже не смотря на перемещение
> все равно в памяти будут фрагментированные страницы.

Это почему ? уплотение байтик к байтику подгонит

#631
15:49, 25 июля 2017

Rikk
> вы бы могли бы пояснить подробно развернуто ? если не трудно.
Не трудно, тут речь идет за само явление.
Пусть мы имеем линейную память и наивный аллокатор. Теоретически если мы будем
перемещать хвост сразу после удаления элемента такова явления как фрагментация
не будет. Но практически это сильно дорогая операция чтобы делать это каждый
раз при удалении элемента. Т.е. на практике уплотнение происходит либо когда
фрагментация достигает определенного значения, если за ней следить напрямую,
либо в какой-то промежуток времени за который это явление не станет гарантированно
фатальным.

innuendo
> Это почему ? уплотение байтик к байтику подгонит
См выше.

#632
15:52, 25 июля 2017

innuendo

> и кастомый аллокатор
Что уж там, добавляй в список условий и девять планет в ряд.

#633
16:46, 25 июля 2017

innuendo

> что ты начал разговор про требования к системе для аллокатора ты не сталкивался что у заказчиков могут быть разные паттерны
Ты какой то странный. Я бы даже сказал совсем странный. То, что я заговорил о требованиях к аллокатору, говорит как раз об обратном.

Более того, фраза
> один работает с очень большим числом мелких объектов, другой с очень небольшим, но они очень крупные, а третий что-то посередине
это как раз неформальное выражение требования к системе.

Я конечно понимаю, что проще забить на требования, взять "GC-сам-все-разрулит" язык и начать говнокодить на авось.
Но ничего серьезного из этого не выйдет, надеюсь все это понимают.

#634
16:49, 25 июля 2017

Ghost2
> > один работает с очень большим числом мелких объектов, другой с очень
> > небольшим, но они очень крупные, а третий что-то посередине
> это как раз неформальное выражение требования к системе.

пишем один аллокатор для одного заказчика, другой для второго, и тд ?

> взять "GC-сам-все-разрулит" язык и начать говнокодить на авось.

Я понимаю, болезненно понимать, что можно писать по-иному. Что там у вас с циклическими ссылочками при быстром изменении под желания заказчиками? когда нету времени для вдумчивого медитирования 

#635
16:51, 25 июля 2017

innuendo

> пишем один аллокатор для одного заказчика, другой для второго, и тд ?
У заказчика должен быть use case. Система должна его обеспечивать, все. Как ты там аллокаторы навертишь, это твое дело.
Или ты считаешь, что это невозможно?

#636
18:33, 25 июля 2017

innuendo
> один работает с очень большим числом мелких объектов, другой с очень небольшим,
> но они очень крупные, а третий что-то посередине
Но для этого не нужно у ОС сразу резервировать кусок памяти, и работать с этим куском.

#637
18:36, 25 июля 2017

innuendo
> пишем один аллокатор для одного заказчика, другой для второго, и тд ?
Ох лол. Я кстати хотел бы посмотреть как такое в C# сделать.

#638
21:57, 25 июля 2017

А вот те ребята, которые говорят, что для С++ легко сделать GC, расскажите, как такое вообще возможно?
Вот у меня есть класс с приватным полем:

class Foo {
  private:
    char* Bar;
}
И этот класс сливается. Как узнать надо чистить память на которую ссылается Bar или нет?
Ок, можно обернуть в shared_ptr, но что делать, если Bar будет иметь тип Foo? Там уже могут быть циклические ссылки. Как это вообще можно разрулить на уровне malloc, объясните. Я не понимаю. Ведь для того, чтобы разрулить циклические ссылки - надо знать где эти ссылки находятся. Буквально в классе Foo в первом поле ссылка. И тогда, когда класс Foo будет выходить из области видимости - его можно пометить как "требует проверки", и потом GC сможет пройтись от Foo по всем ссылкам, которые держит этот класс, пометить их так же и потом слить...
Короче номальный GC на C++ не сделать. Для этого надо как минимум запретить работать с сырыми указателями.

#639
22:07, 25 июля 2017

MrShoor
Все GC для крестов (все 1) просто сканируют стеки и область глобальных переменных целиком на все что похоже на указатель.

#640
22:09, 25 июля 2017

MrShoor
> Я не понимаю
MrShoor
> Короче номальный GC на C++ не сделать. Для этого надо как минимум запретить
> работать с сырыми указателями.

На третий день до индейца Орлиный Глаз дошло что в сарае три стены

#641
22:27, 25 июля 2017

innuendo
> На третий день до индейца Орлиный Глаз дошло что в сарае три стены
Не, я просто с телефона был, длинные посты писать неудобно. Я искринне удивился, когда прочел это:

Когда появилась мода на сборщики мусора, тому же Страуструпу и компании задавали
вопрос когда будет сборщик в С++. Ответ был примерно такой - никогда, т.к. С++ не
мешает подключать кастомные реализации менеджеров памяти в которых может быть
реализовано что угодно.
Вряд ли Страуструп имел ввиду: "можно имплементировать свой GC". В С++ элементарно нет ни информации о переменных, ни информации о типах. Так что все, что можно сделать в С++ - это умные указатели. Но умные указатели (shared + weak) вполне годно справляются со сборкой мусора.
#642
22:31, 25 июля 2017

MrShoor
> Но умные указатели (shared + weak) вполне годно справляются со сборкой мусора.

Сам же написал про циклические ссылочки

#643
22:38, 25 июля 2017

innuendo
> Сам же написал про циклические ссылочки
Если смартпоинтеры умеешь использовать - то циклических ссылок не возникает. Но да, нужна культура их использования, что требует определенного порога вхождения. Если дать такую штуку новичку, который не умеет в них - то будет очень и очень грустно. Новичек наделает кучу циклических ссылок, и починить это потом может оказаться очень сложно. В этом плане С# рулит и педалит, потому что сам приберет говнецо за новичком. Но особо упоротые упорные личности умудряются даже C# отправить в нокдаун, создавая ситуации, когда объекты уходят в N-ое поколение. Отследить такие ситуации как мне кажется еще сложнее.
В любом случае научиться правильно готовить C# легче, чем научиться правильно готовить смарт поинтеры.

#644
22:47, 25 июля 2017

MrShoor
> Если смартпоинтеры умеешь использовать - то циклических ссылок не возникает. Но
> да, нужна культура их использования, что требует определенного порога
> вхождения.

Я уже устал объяснять... чтобы всё было чики пуки нужно помедитировать на логикой ... как только начинаются многочисленные изменения по желанию заказчика становится очень весело

Страницы: 142 43 44 45 46 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.