nesco писал(а):
хотя вроде несколько раз пересчитывалПроще надо быть...
Мегабайт - 6 порядков (они же - нолики),
Гигабайт - 9 порядков,
Терабайт - 12 порядков,
Пентабайт - 15 порядков,
и т.д..
Какие нафиг деления, о чем вы говорите...
Netspirit писал(а):
То-есть, когда есть 2 файла по 1 МБ (1048576 байт), то читая 4 байта из 1-го файла и сдвигая на 1 байт, 2-й файл нужно прочитать 1048576 раз. Это объем данных ((1048576 - 3) * 1048576) = 1099508482048 байт, или 1 ТерабайтТеоретически (пока), от терабайтов можно уйти, и не делая слишком умное лицо...
Простеньким хешированием.
Ну скажем, пусть 2-х байтным хешом будут тупо первые два байта последовательности, как целое число.
Ведь ТС как бы заикался и о 2-х байтных совпадениях.
Ну и все. Просматриваем на совпадения теперь уже не весь словарь, а только с тех мест (взятых из хеш-таблицы), которые начинаются именно с нужных 2-х байт.
Тоже не самая быстрая история... Но 4.8 ( = lg(2^16) ) порядка отыграть можно (особенно, если словарь без повторов).
А пара десятков "МегаОпов" - это уже не "ТераОп"
Пока не делал. Вроде бы целочисленных массивов достаточно... Но то, чего у нас есть в элементной базе - слишком уж долбанутое, в плане эффективности.