|
Интересный вопрос на оптимальный алгоритм
|
|||
---|---|---|---|
#18+
Students, можешь искать по слову diff ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 13:35 |
|
Интересный вопрос на оптимальный алгоритм
|
|||
---|---|---|---|
#18+
Studentsалгоритм есть здесь http://en.wikipedia.org/wiki/Longest_common_subsequence_problem Кто-нибудь знает, как он по-русски называется? В левой колонке есть ссылка на русский вариант - "Наибольшая общая подпоследовательность". Studentsработает быстрее, чем перебор байт-за-байтом. Строго говоря здесь тоже идет перебор байта за байтом :) Быстрее он будет работать потому что делает меньше вычислений. Однако, чтобы сравнивать два файла нам нужно иметь их рядом. Ты же говоришь о задаче сравнения двух файлов находящихся на разных компьютерах в которолй нужно съэкономить сетевой трафик и минимизировать общее время на задачу (поиск разных кусков + передача по сети). При такой постановке алгоритм rsync будет эффективнее на мой взгляд. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 15:17 |
|
Интересный вопрос на оптимальный алгоритм
|
|||
---|---|---|---|
#18+
ясно, спасибо. rsync сейчас как раз и используется. Основная проблема в том, что приходится перебирать "байт-за-байтом" огромных файлов, например, 30ГБ. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 15:34 |
|
Интересный вопрос на оптимальный алгоритм
|
|||
---|---|---|---|
#18+
Students, перебор байз за байтом это не проблема. Тебе в любом случае придется это делать так или иначе. Если бы файловая система сохраняла список изменений сделанных в файле, то тогда перебор содержимого файла для поиска изменений был бы не нужен. Файловые системы FAT/NTFS этого не делают. Значит остается только перебор всего содержимого. Если для тебя это проблема, то заливай всегда файл целиком. Все просто и никаких "проблем". Вообще складывается впечатление что ты не понимаешь на оптимизицию чего направлены алгоритмы типа rsync. Мы стремимся уменьшить сетевой трафик и _общее_ время на передачу файла. Даже если я потрачу 5 минут на поиск отличий в файле, но съэкономлю 30 минут на передачу - это все равно выигрыш. При желании можно сделать службу которая будет следить за изменениями в файлах, пересчитывать хеши в фоновом режиме и сохранять их. При таком подходе многие хеши уже будут готовы на момент начала синхронизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 16:20 |
|
Интересный вопрос на оптимальный алгоритм
|
|||
---|---|---|---|
#18+
StudentsОсновная проблема в том, что приходится перебирать "байт-за-байтом" огромных файлов, например, 30ГБ. Я искренне не понимаю, в чем проблема. Вот вы перед загрузкой определяете хэши и, убедившись, что на сервер файла нет, загружаете его. Кто вам мешает эти хэши тоже грузить и хранить их? Тогда, при следующей загрузке, вы считаете хэши только на клиенте, не грузя сервер, и сравниваете эти хэши с сохраненными на сервере. Даже более того, перед подсчетом хэшей можете сначала попробовать сравнить нерасчетные признаки, например, длина файла, тип файла. Про огромные файлы и MMF я вам уже сказал. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2014, 16:25 |
|
|
start [/forum/topic.php?fid=20&msg=38614430&tid=1403041]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
238ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 336ms |
total: | 662ms |
0 / 0 |