Bulat_Ziganshin
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ещё один секрет практического использования SREP: режим -m2 практически бесполезен, как можно видеть из таблицы: 4,531 mb | Время упаковки | Память упаковки | Операций в/в | Сжатый размер | После дожатия LZMA | -m1 | 40 sec | 363 mb | 0 | 3,117 mb | 726,238 kb | -m2 | 36 sec | 194 mb | 312k | 3,117 mb | 726,238 kb | -m3 -c512 | 36 sec | 194 mb | 304k | 3,044 mb | 724,790 kb | -m3 | 48 sec | 356 mb | 13,277k | 2,995 mb | 723,911 kb | Режим -m2 даёт те же результаты как -m1, но проверяет совпадение не сличением SHA-1 хешей блоков, а прямым сравнением со старыми данными, повторно читаемыми из входного файла. В результате, напрямую он потребляет меньше памяти, но более чем компенсирует это повышенной нагрузкой на дисковый кеш. Хотя в идеальных условиях (как в этом тесте), когда необходимая для сравнения часть файла полностью помещается в ОЗУ, -m2 может быть даже немного быстрее, чем -m1, на практике часто -m2 приводит к трешингу дискового кеша и работает медленней -m1. Итого его нет смысла использовать: -m1 не медленней и жмёт точно так же. Режим -m3 даёт наилучшие результаты, но использует в десятки раз больше I/O операций чем -m2, что при недостатке ОЗУ делает его во столько же раз медленней. Зато -m3 -c512 требует столько же времени и памяти, как -m2, при этом сжимая лучше. В данном тесте, он совершенно бесплатно дал нам 60% от выигрыша -m3 по сравнению с -m1/m2. С технической точки зрения, этот режим работает в точности как -m2, но не ограничивает найденное совпадение целыми 512-байтными блоками, а включает в него все до последнего совпадающие байты. Таким образом, вы должны использовать один из следующих режимов: -m1, -m3 -c512 или -m3. Если вы использовали режим -m2 с опцией -lN для уменьшения потребления памяти, то замените его на -m3 -cN - это увеличит степень сжатия при том же расходе времени и памяти. А вместо -m3 -lN где N>=1024 я советую использовать -m3 -cM, где M = наибольшая степень 2, меньшая N - это сделает сжатие более мощным и быстрым при использовании того же объёма памяти. Детали тестирования |