Каковы затраты памяти Swift при разборе JSON (но в целом тоже)?
У меня есть этот достаточно стандартный ADT в Swift, который я использую для анализа некоторых данных JSON, которые, по всем параметрам, очень похожи на эти структуры данных. Файл JSON представляет собой массив из примерно 155 тыс. Объектов, которые разбираются в соответствующие [LogRow]
,
Теперь я прекрасно понимаю, что по сравнению с обычным текстовым представлением, таким как JSON, будут некоторые издержки, но я обнаружил, что файл JSON размером около 500 МБ в итоге занимает до 5,5 ГБ памяти моего компьютера -- в моей книге это накладные расходы в 10 раз, если я что-то упустил.
Я осмотрел профилировщик XCode, но не увидел утечки памяти. Я даже стараюсь брать данные и декодер в var
s, так что я могу обнулить их и подтолкнуть ARC, но это, кажется, не очень хорошо работает, так как я предполагаю, что я создаю множество указателей повсюду, так что вряд ли что-то будет освобождено.
Я проверил мой код людьми, более опытными, чем я, в Swift, и все они согласились с тем, что код в порядке, а накладные расходы довольно крутые. Может кто-нибудь указать мне какие-либо документы о требованиях к памяти объектной модели, возможно.
РЕДАКТИРОВАТЬ Для справки, вот что я вижу в инструментах. Небольшое падение в конце происходит, когда исходный файл освобождается (я предварительно выделяю его целиком в строку, прежде чем передать его JSONDecoder
,