Эффективный для памяти способ перебора большого диапазона

Я хочу сравнить два действительно больших набора данных по байтам в определенном диапазоне.

Так, например, у меня будет один файл длиной 0x80000000 байт и другой файл длиной 0xffffffff байт. И скажем, я хотел бы сравнить эти два файла в определенном диапазоне байт за байтом от 0x1000 до 0x7200000.

Если бы это был меньший диапазон, я бы, вероятно, выбрал until, но теперь, поскольку это гораздо больший диапазон, until был бы довольно неэффективным с точки зрения памяти.

Как реализовать такую ​​базовую операцию функционально и эффективно с точки зрения памяти?


person zarko    schedule 22.11.2019    source источник
comment
until имеет фиксированное использование памяти, так почему это неэффективно для больших диапазонов?   -  person Tim    schedule 22.11.2019
comment
При использовании until я получаю накладные расходы GC, не хватает памяти.   -  person zarko    schedule 22.11.2019
comment
Если я вас правильно понял, вы, кажется, говорите о сложности загрузки сразу всех данных в двух файлах в память. Это не проблема, поскольку Scala поддерживает ленивое построчное чтение из файлов. Я не уверен, как читать из файла побайтно.   -  person Allen Han    schedule 22.11.2019
comment
Этот пост stackoverflow может быть полезен: stackoverflow.com/questions/7598135/ Теперь вам просто нужно лениво читать из файла.   -  person Allen Han    schedule 22.11.2019
comment
Вам нужно опубликовать свой код и показать, как вы читаете файлы и как вы используете until для их сравнения.   -  person Tim    schedule 22.11.2019