Я написал простой инструмент командной строки для особой необходимости конвертировать определенный INI-файл в список свойств. Я использую NSPropertyListSerialization
, чтобы написать словарь в файл списка двоичных свойств 307kb. Однако, когда я пишу его в XML и после преобразования его с помощью plutil в список свойств двоичного файла, размер файла составляет всего 224 КБ.Сжимающие пластины - NSPropertyListSerialization vs plutil?
Я хотел бы сохранить как можно больше данных, но я также хочу держаться подальше от NSTask
. Вопрос здесь в том, как бы достичь тех же результатов из кода, что и я, используя plutil
.
Первый шаг - выяснить, почему существует разница в размере. Можете ли вы изучить два файла и посмотреть, откуда приходит дополнительное пространство? Однако это может быть сложно с двоичными данными. –
Здесь очень старая, но, возможно, связанная с ней тема: http://www.cocoabuilder.com/archive/cocoa/153341-nspropertylistserialization-plutil-bloat-in-tiger-vs-jaguar.html. По-видимому, некоторые реализации будут искать идентичные массивы и другие элементы и обрабатывать их специально. Но 'NSPropertyListSerialization' не делает этого, потому что разработчики ожидают, что он будет работать как можно быстрее. Поэтому я предполагаю, что plutil делает это дублирующее обнаружение, тогда как NSPropertyListSerialization - нет. –