Самый эффективный способ хранения двумерного массива в двоичных файлах - PullRequest
1 голос
/ 07 января 2012

Мне нужны предложения по хранению 2D-массива в двоичном файле.Мне нужно, чтобы он был обширным, чтобы можно было быстро добавлять новые строки и столбцы.

До сих пор я придумал такой подход: я выделяю фиксированный размер памяти для каждой строки и каждый раз, когда ядобавив новую строку, я заполняю ее служебной памятью (скажем, 1000 байтов), чтобы мне не нужно было сдвигать строки каждый раз, когда я добавляю новый столбец.Когда служебная память заполняется, я добавляю служебную информацию еще на 1000 байтов и т. Д.

Этот метод оказался очень неэффективным, поскольку при добавлении нового столбца мне приходится перепрыгивать через строки.*

В идеале, если бы мне не нужно было добавлять новые строки или столбцы, я бы хранил каждую строку надлежащим образом, но это не возможно для того, что я хочу.

1 Ответ

1 голос
/ 07 января 2012

Ваш подход довольно хорош, фактически это то, что используют многие БД (notabene oracle). Чтобы преодолеть препятствие «где моя строка», вы можете сохранить индекс строк в памяти, просто длинный [] файл, сохраняющий смещение в начале строки для каждого (или каждого 2-го, 4-го, 8-го, .. .) строка. Таким образом, вы можете быстро перейти к своему ряду, а затем добавить свое седло, как планировалось изначально.

...