Bulat_Ziganshin
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору возможны различные сценарии использования SREP и тут меня интересуют ваши мнения, ваши запросы на мой взгляд, самый сильный сценарий выглядит так: сжатие напрямую в arc с цепочкой алгоритмов precomp+srep+...+lzma. при этом если srep и precomp будут работать как фильтры при распаковке, то при инсталяции диск не будет загромождаться временными файлами, и скорость инсталяции будет очень высока, порядка 50 мб/с, так что за 5-10 минут можно будет установить любую современную игрушку, даже размером в 10-20 гб размер используемой памяти можно ограничить таким алгоритмом: скажем пользователь при распаковке разрешает использование 500 мб ОЗУ. когда занятая программой память подходит к этому пределу, программа находит 8 мб "самых будущих" матчей и скидывает их содержимое во временный файл, запоминая где они начинаются. когда распаковка подойдёт к этому моменту, данные считываются из врем. файла одним куском. при этом, если для них нет свободной памяти, то точно так же во временный файл записываются "самые будущие" матчи из нынешнего словаря. поскольку из всех находящихся в данный момент в памяти данных позже всего нам потребуются именно "самые будущие" матчи, то это де-факто такой интеллектуальный алгоритм своппинга, которые выкидывает в своп-файл именно те данные, которые нам не потребуются дольше всего. при этом чтение/запись этих данных производится кусками по 8 мб, т.е. никаких проблем с seek times и нагрузкой на кеш диска как у обычного srep и обычного своп-файла оценить эффективность такого подхода можно на примере того же lp2.pcf - в нём на 22 гб данных приходятся 13 гб матчей. если ограничить потребление памяти при распаковке 200 мб, то во временный файл придётся записать (и затем прочитать) 5-10 гб данных, что при скорости диска в 100 мб/с потребует 100-200 сек. учитывая, что процесс распаковки наверняка будет CPU bound, а не I/O bound (т.е. ограничиваться скоростью CPU), этот обмен с диском будет бесплатным (т.е. не увеличит общее реальное время работы), если остальные процессы в цепочке (lzma, precomp) будут работать параллельно с srep Добавлено: забыл добавить - размер временного файла на диске при этом будет ограничен теми же 2 гб, просто некоторые 8мб блоки в нём будут несколько раз перезаписываться в ходе работы
|