| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Процентное соотношение |
| Автор: Antony41 19.12.2009, 01:51 |
| Всем привет! Хотелось бы узнать как можно сравнить два файла (по байтам) и сделать вывод, на сколько процентов один файл совпал с другим... Хотя бы с чего начинать? Как это можно организовать с потоками? и тот же вопрос, если файл больших размеров, 2,3,5 гб? Примерно прикинул, думаю что нужно куда то писать, совпавшие байты, и не совпавшие, а потом посчитать и далее по формуле...? |
| Автор: Демо 19.12.2009, 02:10 |
| Проблема в том, чтобы прочитать файл? Или в чём? |
| Автор: ~FoX~ 19.12.2009, 02:23 |
| А файлы какого то формата или просто набор битов? А файлы одинаковые по размеру или может быть ситуация при которой первый фал размером в гиг может полностью включать в себя файл размером в пол гига? Файлы размером больше 2 гиг придется резать... Тяжело адресовать смещение на 2^31 |
| Автор: Antony41 19.12.2009, 02:27 |
| Проблема в том, куда записывать совпавшие байты и не совпавшие Добавлено @ 02:35 Файлы любого формата, независимо, файлы могут быть разным размером, да может быть и такое что пол гига и гиг. Ну я думаю можно обойтись и без резания, мне кажется что для сравнения, можно будет использовать до двух тоесть если первый файл будет размером 3 гб, а второй 5, то я думаю сравнить 2 гига вполне хватит, а остальное просто отрубить))) Основная проблема в том, что придётся сравнивать большое количество файлов, например до 7 - 8 тыс. то есть если например в списке будет 7000 файлов, то эту процедуру придётся выполнять 24 496 500 раз. |
| Автор: ~FoX~ 19.12.2009, 03:02 |
| Antony41, Не очень понятно, есть файл с содержимым - 0123 и есть файл - 123 если сравнить их побитово то совпадений не будет... Чтобы узнать совпадения нужно сравнивать какой то средний показатель... Например представить файл в битовой маски и сравнивать спектр участка, или использовать вейлветы или другой какой нибудь критерий.... С коэффициентами... Копать нужно в сторону алгоритмов сжатия и оптимизированного статистического анализа... Иначе анализ 7000 файлов с возможностями присутствия в каждом из каждых последовательностей превращается в задачу по распределенным вычислениям и займет оооочень много времени... |
| Автор: Antony41 19.12.2009, 03:32 | ||
Вот и я всё это понимаю, но теоретически то это возможно... Сейчас буду думать
Работаю сейчас с таким алгоритмом, он в принципе работает нормально, но иногда его можно и обмануть)) Спасибо Fox сейчас буду что нибудь думать. Еще отпишусь в этом разделе... |
| Автор: Antony41 19.12.2009, 08:36 | ||
| в принципе всё ясно! пытался, но толком ни чего не вышло использую пока функцию не точного сравнения участков примерно так
Как можно ускорить эту функцию? |