Я работаю над проектом в Objective-c, где мне нужно работать с большими объемами данных, хранящимися в NSDictionary
(это около max ~ 2 гигабайтов в памяти). После всех вычислений, которые я накладываю на него, кажется, что было бы быстрее сохранять/загружать данные по мере необходимости (по сравнению с повторным анализом исходного файла).Сохранение больших объектов в файл
Итак, я начал изучать сохранение большого количества данных. Я пробовал использовать NSKeyedUnarchiver
и [NSDictionary writeToFile:atomically:]
, но оба отказались с ошибками malloc (не могу выделить ____ байтов).
Я осмотрел SO, форумы Dev от Apple и Google, но не смог ничего найти. Мне интересно, может ли лучше создать файл побито, а не сразу, но я никак не могу добавить к существующему файлу. Я не полностью против сохранения с кучей небольших файлов, но я бы скорее использовал один большой файл.
Спасибо!
Отредактировано для включения дополнительной информации: Я не уверен, сколько накладных расходов NSDictionary
дает мне, поскольку я не беру всю информацию из текстовых файлов. У меня есть файл с 1,5 гигабайтами (из которых я держу ~ 1/2), и он оказывается около 900 мегабайт за 1 гигабайт. Там будет еще несколько данных, которые мне нужно добавить в конце концов, но он будет построен со ссылками на то, что уже загружено в память, - оно не должно удваивать размер, но может приблизиться.
Данные все серийные и могут быть разделены на хранение, но все они должны быть в памяти для выполнения. В настоящее время у меня есть пары integer/string и в конечном итоге получаются пары строк/строк (все значения также являются ключом для другого набора строк, поэтому конечные требования к хранилищу будут такими же строками, которые у меня есть, плюс куча ссылок).
В конце концов, мне нужно будет связать ~ 3 миллиона строк с другим набором строк. Тем не менее, единственная важная вещь - отношения между этими строками - я мог бы хэш их всех, но NSNumber
(как NSDictionary
нуждается в объектах) мог бы дать мне столько же накладных расходов.
Сколько данных является данными и сколько издержек из NSDictionary? С таким большим количеством данных, возможно, стоит рассмотреть возможность написания кода с ручным управлением для управления всем этим. Можете ли вы предоставить какой-то контекст? Является ли иерархия данных или серийная? Разделяема ли она или интегрирована? –