Ответ 1
Я не тестировал его сам, но вы могли бы попытаться использовать vector-binary-instances, который предоставляет экземпляры Binary
для Vector
s, а затем используйте binary, например encodeFile.
У меня есть 10GB Data.Vector.Unboxed вектор, который я хочу эффективно сохранить на диск. Какой лучший, самый эффективный способ? Я планирую также прочитать его из файла с отображением памяти.
Я видел этот пакет этого пакета, но работает только с Storable, но мне нужно остаться с unboxed.
Я думал о преобразовании в список, но я предполагаю, что это не очень идеально.
Я не тестировал его сам, но вы могли бы попытаться использовать vector-binary-instances, который предоставляет экземпляры Binary
для Vector
s, а затем используйте binary, например encodeFile.
Вы можете конвертировать между типами Vector за счет обхода O(n)
всего вектора. Функция, которую вы ищете, convert
. Пока вы не планируете часто выставлять этот вектор на диск, эта стоимость не должна быть значительной над всеми и, конечно, быстрее, чем на самом деле писать вектор на диск. Однако, если вы часто оплачиваете эту стоимость, вам следует, вероятно, пересмотреть алгоритм.
Как насчет памяти, сопоставляющей массив C, лежащий в основе вектора? Конечно, это работает, только если вектор распакован: -).
Запись будет состоять в том, чтобы взять указатель на массив, общий размер C массива и записать кусок памяти C с одним вызовом C.