Ghost2004
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Насчёт новых настроек lzma - потестировал немного, вот что вышло: Исходные данные: образы игрушки и её же самой, но с аддоном. Разбиты на 6 равных кусков каждая, чтобы полные совпадения практически полностью влезли в словарь на 1000mb. Полный размер - 9 094 430 834 байт. lzma:1000mb:max:ht4:mc32 - 3 298 916 060 . Время сжатия - 17634.30 с, скорость 516 кб/с. Полное время - 19077.95 с. Но при этом rep:128 выдаёт лучшие результаты (время не запомнилось - но оно наверняка соответствует скоростьям 15-20 Мб/с): rep:1000mb:128:h27 - 3 298 640 599 rep:1000mb:128:h27++rep:1000mb:128:h27:a99 - 3 121 331 796 Так что либо mc32 тут не хватает, либо rep:128:1000mb+lzma:max:bt4:192mb таки оказывается эффективней. Единственное что несколько мешает этому варианту, так это глюки выделения памяти с tempfile - к сожалению, такая цепочка не проходит, приходится делать двойной архив. Кстати говоря, интересно, это заморочки 32-битных виндов, или для 64-битных систем что-нибудь вроде rep:1500mb+tempfile+rep:1500mb или rep:1500mb+tempfile+lzma:192mb:max пройдёт? Далее, rep:1000mb:128:h27++lzma:192mb:max - 2 679 724 040 rep:1000mb:128:h27++lzma:1000mb:max:ht4:mc32 - 2 568 654 628 (далее для упрощения буду вместо rep:1000mb:128:h27++rep:1000mb:128:h27:a99 писать rep:1000mb:128x2) rep:1000mb:128x2++lzma:1000mb:max:ht4:mc32 - 2 532 449 817 rep:1000mb:128x2++lzma:192mb:max - 2 531 091 310 Так что выходит, на этих данных (т.е. после одного rep'а) rep:1000mb:128:h27++lzma:192mb:max чуть лучше rep:1000mb:max:ht4:mc32 . А вот для самой последней версии я поигрался с настройкой :h - вот что вышло: rep_1000mb_128x2++lzma:64mb:128:max:h1gb : Compressed 1 file, 3.121.331.796 => 2.536.560.520 bytes. Ratio 81.2% Compression time 4067.89 secs, speed 767 kB/s. Total 2740.00 secs rep_1000mb_128x2++lzma:64mb:128:max Compressed 1 file, 3.121.331.796 => 2.536.562.893 bytes. Ratio 81.2% Compression time 4594.49 secs, speed 679 kB/s. Total 4615.69 secs Так что за счёт такого увеличения расходуемой памяти размер хоть и почти не меняется, но ускорение заметное - в районе 13% для одного процессорного ядра, и целых 70% для двух ядер. В связи с этим вопрос - каким образом выделяется память при использовании :h - нельзя ли сделать возможным выделить к 1 Гб словаря больше 512 mb хэша (ведь выходит, что выделяется dictsize*1.25+hashsize), если свободные блоки памяти - один на 1750 mb, другой - 750 mb? Ведь такая настройка должна заметно ускорить или даже улчшить сжатие при наличии 3 Гб памяти. |