Как бы делал я. Хотя почему бы, я почти такое и делал.
Видно, что файл 2 значительно меньше. Загружаем его в память, считая от каждой строки быстрый хеш, к примеру crc32 (табличный код есть в вике) и составляя таблицу из списков строк.
В таблице делаем, например, 32768 элементов - тогда скорее всего коллизий в файле будет очень мало, и для каждой строки будет выполняться только 1 сравнение.
От каждой строки мы считаем crc32 и добавляем в список, который в нашем массиве списков имеет индекс (crc32 and $7FFF).
Затем читаем по очереди строки из файла 1, от каждой считаем crc32, переходим к соответствующему списку, для каждого элемента сравниваем сами строки. Если в итоге строка была найдена - мы ее не пишем в файл 3. Иначе - пишем.
В чем плюс подхода - в реальности для каждой строки будет выполняться 1 сравнение строки. Когда я переделал одну прогу сравнения тысяч строк во множестве файлов на подобную хеш-таблицу, все стало работать в тысячи раз быстрее.
Минус - как всегда для хеш-таблиц, память.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
|