Ghost2004
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Bulat_Ziganshin Насчёт srep08 - я правильно понимаю, существует вероятность около 10^-40 (т.е. ~2^-128) для 2x512 mb хеша (+1 gb), что в файле обнаружится некорректное совпадение, и ещё 10^-73 - (2^-256), что и md5 его не заметит, и не сообщит об некорректном блоке в процессе декомпрессии? Тогда стоит добавить в arc.ini метод не как srep, а srep08 (и вписать на данный момент srep=srep08) - всё таки даже такие бесконечно малые вероятности могут взять и случиться вопреки всему ... Так что в следующих версиях с этим надо что-то сделать. Проще всего, в качестве быстрой заплатки, сделать проверку на такую ошибку на стадии компрессии - добавив декомпрессию после каждого сжимаемого блока на 8 mb, и сравнив исходного сжимаемый блок, с блоком после компрессии-редекомпрессиии (как оно делается в видео-кодеках, хотя там считается разница). В таком режиме даже md5 считать не надо. Просто по скорости декомпресии у меня выходило 15-25 Мб/c, а вот скорость компрессии была Cpu 5.332 mb/sec, real 3.800 mb/sec - на тех 23 Гб, с l512 (а декомпрессия давала 15 Мб/с). Впрочем, на прошлых 7.5 Гб данных с с l16kb она могла достигать до Cpu 19.196 mb/sec, real 14.998 mb/sec - при декомпрессии в 20.236 mb/sec. На меньших длинах было вот что: l128 - Cpu 7.160 mb/sec, real 6.477 mb/sec - компрессия, 21.505 mb/sec - декомпрессия. l256 - Cpu 7.915 mb/sec, real 6.465 mb/sec - компрессия, 24.134 mb/sec - декомпрессия. l256 для уже сжатых srep -l256 данных - Cpu 5.335 mb/sec, real 4.661 mb/sec против 27.547 mb/sec l512 - Cpu 9.948 mb/sec, real 8.859 mb/sec при 23.844 mb/sec декомпрессии. Так что такой подход уменьшил бы (в теории) скорость сжатия с 9 до 6 Мб/с, а с 3.8 лишь до 3.1 - зато при декомпрессии md5 считать бы не требовалось (и скорость cpu возросла бы со 150 до 400-500 Мб/c - хотя она не особо там важна, разве что для очень быстрых SSD). Но главное, тот бесконечно малый шанс на ошибку пропал бы совсем. Хотя то - временная мера, возможно и правда лучше нечто подобное проделывать не с проверкой md5 8 Мб-ного блока, а на более ранней стадии компрессии, при поиске совпадений... Но это, должно быть, куда труднее сделать. А режим замедленной компрессии (с проверкой не по md5, а побайтовым сравнением) можно вообще включать особым ключом. С другой стороны, нечто подобное может иметь смысл лишь при интеграции srep в сам freearc в качестве препроцессора - а к тому времени и в srep может появится возможность проверять совпадения точнее. А так srep сейчас только для тестирования - так что хватило бы ключа -t в freearc'е . Добавлено: У меня WinXP 32-bit SP2. Пока пробовал со включённым /3G (mex5t не работает), завтра попробую с выключенным. А что ещё нужно описать? | Всего записей: 51 | Зарегистр. 02-01-2008 | Отправлено: 23:10 30-11-2009 | Исправлено: Ghost2004, 23:14 30-11-2009 |
|