Страница 2 из 2

Re: FreeMem

СообщениеДобавлено: 08.12.2020 00:52:58
скалогрыз
runewalsh писал(а):RESET'нутые страницы переиспользуют другие приложения без необходимости системе выгружать в своп их старое содержимое.

я смею предположить, что в этих страницах хранятся особые данные.
А точнее какие-нить битмапы, ну или структуры, которые никуда не ссылаются кроме, как на самих себя.

Например, если хранить в такой вот страничке ссылку на Паскаль объект, который создаётся run-time менеджером памяти; то после RESET_UNDO, совсем не факт, что ссылка на объект будет валидной. Ведь сам FreeMem обратного хода не имеет. (в отличии от того же VirtualAlloc)

runewalsh писал(а):Если RESET_UNDO сработал, мы можем не читать их из файла, тем самым экономя время и I/O.

а были ли такие тесты: сделали ли SSD диски эту оптимизацию бесполезной? (спрашиваю для расширения кругозора :) считают использвание фичи RESET_UNDO вполне себе адекватным решением)

Re: FreeMem

СообщениеДобавлено: 08.12.2020 07:38:17
runewalsh
Будет бесполезной, но это не только ради пропуска чтения с диска, ещё твой процесс будет занимать меньше памяти, а освобождаемые и выделяемые снова страницы система ЗАНУЛЯЕТ перед переиспользованием, как по контракту VirtualAlloc, так и потому, что они могли принадлежать другому процессу.

Нет ничего СЛИШКОМ УЖ ужасного в том, чтобы сохранить во (временный и актуальный в рамках 1 процесса) файл указатель, а потом прочитать его назад. Но да, проще сохранять туда только тяжёлые данные — собственно картинки и их части, тем более остальные структуры в сравнении с ними не занимают ничего и с ними можно работать по-нормальному. Это можно оформить как отдельный интерфейс для манипуляций с памятью под картинки.

Re: FreeMem

СообщениеДобавлено: 08.12.2020 07:54:36
скалогрыз
runewalsh писал(а):Но да, проще сохранять туда только тяжёлые данные — собственно картинки и их части, тем более остальные структуры в сравнении с ними не занимают ничего и с ними можно работать по-нормальному. Это можно оформить как отдельный интерфейс для манипуляций с памятью под картинки.

вот в этот момент, следует выложить ссылку на редактор.
даже если он коммерческий, и написан на крестах! :)

Re: FreeMem

СообщениеДобавлено: 08.12.2020 08:06:36
runewalsh
Я этого не видел лично, так, примерно почувствовал.
Гуглится libsai — реверс-инжиниринг формата Paint Tool SAI, там структура выглядит оптимизированной как раз под эти все штуки, в частности, картинки бьются на блоки 32×32, потому что 32×32×RGBA8 = 4 Кб.

Re: FreeMem

СообщениеДобавлено: 08.12.2020 10:11:47
Снег Север
Вообще-то такое в программировании называют "использование грязного хака". И эти грабли, почти неизбежно, однажды бьют по лбу...

Re: FreeMem

СообщениеДобавлено: 08.12.2020 10:20:21
скалогрыз
Снег Север писал(а):Вообще-то такое в программировании называют "использование грязного хака".

если ты про RESET_UNDO, то это заявленный операционкой функционал.
Снег Север писал(а):"использование грязного хака" И эти грабли, почти неизбежно, однажды бьют по лбу...

Cheb очень любит эти дела )))