Swift не дает никаких гарантий, где хранятся объекты и структуры, за исключением того, что:
- Reference типы имеют постоянное расположение в памяти
- Расположение Value типов может быть изменено по усмотрению компилятора
Оптимизация Value типов выглядит следующим образом:
- При работа с небольшими структурами компилятор может поместить их в регистры и вообще не выделять место в куче. Это касается простых Int и Double, которые гарантированно помещаются в регистры
- Структуры размером более 3 машинных слов (24 байта на 64-битной машине) могут быть аллоцированы в куче.
Это не противоречит поведению Value типов. Их по-прежнему можно произвольно копировать и компилятор хорошо справляется с избеганием ненужных выделений памяти там, где это возможно.
Детально это раскрывается в лекции Understanding Swift Performance
Актуальную реализацию можно посмотреть в SIL файле Swift
#Swift #MemoryLayout
- Reference типы имеют постоянное расположение в памяти
- Расположение Value типов может быть изменено по усмотрению компилятора
Оптимизация Value типов выглядит следующим образом:
- При работа с небольшими структурами компилятор может поместить их в регистры и вообще не выделять место в куче. Это касается простых Int и Double, которые гарантированно помещаются в регистры
- Структуры размером более 3 машинных слов (24 байта на 64-битной машине) могут быть аллоцированы в куче.
Это не противоречит поведению Value типов. Их по-прежнему можно произвольно копировать и компилятор хорошо справляется с избеганием ненужных выделений памяти там, где это возможно.
Детально это раскрывается в лекции Understanding Swift Performance
Актуальную реализацию можно посмотреть в SIL файле Swift
#Swift #MemoryLayout
👍15👎1
Swift Intermediate Language (7 минут)
Для тех кто заинтересовался SIL после опроса, короткое но достаточное для понимания описание фаз компиляции, SIL фаз оптимизаций и связи с LLVM
#swift #SIL #LLVM
Для тех кто заинтересовался SIL после опроса, короткое но достаточное для понимания описание фаз компиляции, SIL фаз оптимизаций и связи с LLVM
#swift #SIL #LLVM
❤5👎2
OSLog и унифицированное логирование в соответствии с рекомендациями Apple (6 мин)
Если вы все еще используете print выражения для логирования, самое время перейти на OSLog
👉 Несколько встроенных уровней логирования
👉 Xcode и консоль форматируют уровни логирования
👉 Возможность управлять уровнем детализации метаданных в логах
#swift #OSLog
Если вы все еще используете print выражения для логирования, самое время перейти на OSLog
👉 Несколько встроенных уровней логирования
👉 Xcode и консоль форматируют уровни логирования
👉 Возможность управлять уровнем детализации метаданных в логах
#swift #OSLog
👍7👎1
Создаем гибкие интерфейсы
Один из самых недооцененных докладов WWDC, он вышел в 2018 году и до сих пор не потерял в актуальности
👉 Как в Apple работают над деталями в интерфейсе, чтобы он ощущался продолжением тела
👉 Как делать анимации дружественными и понятными
👉 Как обрабатывать пользовательские действия
Очень много примеров которые заставят вас взглянуть по-другому на анимации, жесты и мелкие нюансы, которые делают приложения по-настоящему нативными. Тот самый look&feel о котором все говорят но никто не может объяснить
#wwdc #design #gestures
Один из самых недооцененных докладов WWDC, он вышел в 2018 году и до сих пор не потерял в актуальности
👉 Как в Apple работают над деталями в интерфейсе, чтобы он ощущался продолжением тела
👉 Как делать анимации дружественными и понятными
👉 Как обрабатывать пользовательские действия
Очень много примеров которые заставят вас взглянуть по-другому на анимации, жесты и мелкие нюансы, которые делают приложения по-настоящему нативными. Тот самый look&feel о котором все говорят но никто не может объяснить
#wwdc #design #gestures
❤5👎2👍1
OptionSet в деталях (3 мин)
Казалось бы, элементарный тип OptionSet в Swift кроет в себе много деталей. Почему набор опций представлен массивом а не Set, как работает алгебра множеств и другие примеры доступны в заметке от iOS Broadcast на хабре
Казалось бы, элементарный тип OptionSet в Swift кроет в себе много деталей. Почему набор опций представлен массивом а не Set, как работает алгебра множеств и другие примеры доступны в заметке от iOS Broadcast на хабре
🔥4👎3😁2