Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2020-03-03 12:36:30 ЛС | профиль | цитата
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) ) порядка отыграть можно (особенно, если словарь без повторов).
А пара десятков "МегаОпов" - это уже не "ТераОп"

Пока не делал. Вроде бы целочисленных массивов достаточно... Но то, чего у нас есть в элементной базе - слишком уж долбанутое, в плане эффективности.
карма: 9

0
Редактировалось 12 раз(а), последний 2020-03-03 14:58:51