Почему использование структур увеличивает бинарный размер приложения? - PullRequest
0 голосов
/ 17 сентября 2018

Богдан Орлов поделился довольно популярным репозиторием на GitHub под названием iOS Skills Matrix.
Там, в строке "Память", в столбце "Средний" указано, что

Структуры увеличивают двоичный кодразмер

Впервые я увидел это утверждение более полугода назад, и с тех пор я размышлял, правда ли это, и если да, то почему это так?Связано ли это с тем, что структуры копируются в вызовах функций?

БогданОрлов / ios-skill-matrix

1 Ответ

0 голосов
/ 17 сентября 2018

С здесь (не о Swift, но может быть ответом)

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

А с здесь (не только о структурах, но и может быть интересно)

Структуры может увеличить размер вашего двоичного файла.Если у вас есть структуры в списках, они создаются в стеке и могут увеличить ваш двоичный размер.

Необязательное использование также увеличит ваш двоичный размер.Вы будете использовать дополнительные функции, но вы не знаете, что компилятор должен делать много вещей;Это должно сделать проверку, это должно сделать развертывание.Поэтому, даже если для вас это всего лишь одна строка с вопросительным знаком, вы получаете большой размер в вашем двоичном файле.

Общая специализация - еще одна проблема, с которой мы столкнулись.Всякий раз, когда вы используете дженерики, если вы хотите, чтобы ваши дженерики были быстрыми, компилятор будет специализировать их и также даст вам небольшое увеличение размера бинарных файлов.

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

Надеюсь, это поможет.

...