powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Интересный вопрос на оптимальный алгоритм
5 сообщений из 30, страница 2 из 2
Интересный вопрос на оптимальный алгоритм
    #38614165
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students,

можешь искать по слову diff
...
Рейтинг: 0 / 0
Интересный вопрос на оптимальный алгоритм
    #38614311
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Studentsалгоритм есть здесь
http://en.wikipedia.org/wiki/Longest_common_subsequence_problem
Кто-нибудь знает, как он по-русски называется?
В левой колонке есть ссылка на русский вариант - "Наибольшая общая подпоследовательность".

Studentsработает быстрее, чем перебор байт-за-байтом.
Строго говоря здесь тоже идет перебор байта за байтом :) Быстрее он будет работать потому что делает меньше вычислений. Однако, чтобы сравнивать два файла нам нужно иметь их рядом. Ты же говоришь о задаче сравнения двух файлов находящихся на разных компьютерах в которолй нужно съэкономить сетевой трафик и минимизировать общее время на задачу (поиск разных кусков + передача по сети). При такой постановке алгоритм rsync будет эффективнее на мой взгляд.
...
Рейтинг: 0 / 0
Интересный вопрос на оптимальный алгоритм
    #38614351
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ясно, спасибо.

rsync сейчас как раз и используется. Основная проблема в том, что приходится перебирать "байт-за-байтом" огромных файлов, например, 30ГБ.
...
Рейтинг: 0 / 0
Интересный вопрос на оптимальный алгоритм
    #38614421
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students, перебор байз за байтом это не проблема. Тебе в любом случае придется это делать так или иначе. Если бы файловая система сохраняла список изменений сделанных в файле, то тогда перебор содержимого файла для поиска изменений был бы не нужен. Файловые системы FAT/NTFS этого не делают. Значит остается только перебор всего содержимого. Если для тебя это проблема, то заливай всегда файл целиком. Все просто и никаких "проблем".

Вообще складывается впечатление что ты не понимаешь на оптимизицию чего направлены алгоритмы типа rsync. Мы стремимся уменьшить сетевой трафик и _общее_ время на передачу файла. Даже если я потрачу 5 минут на поиск отличий в файле, но съэкономлю 30 минут на передачу - это все равно выигрыш. При желании можно сделать службу которая будет следить за изменениями в файлах, пересчитывать хеши в фоновом режиме и сохранять их. При таком подходе многие хеши уже будут готовы на момент начала синхронизации.
...
Рейтинг: 0 / 0
Интересный вопрос на оптимальный алгоритм
    #38614430
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StudentsОсновная проблема в том, что приходится перебирать "байт-за-байтом" огромных файлов, например, 30ГБ.
Я искренне не понимаю, в чем проблема.

Вот вы перед загрузкой определяете хэши и, убедившись, что на сервер файла нет, загружаете его. Кто вам мешает эти хэши тоже грузить и хранить их? Тогда, при следующей загрузке, вы считаете хэши только на клиенте, не грузя сервер, и сравниваете эти хэши с сохраненными на сервере.

Даже более того, перед подсчетом хэшей можете сначала попробовать сравнить нерасчетные признаки, например, длина файла, тип файла.

Про огромные файлы и MMF я вам уже сказал.
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Интересный вопрос на оптимальный алгоритм
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]