tg-me.com/iosdev/513
Last Update:
Как диагностировать узкие места при сборке ваших проектов на Swift?
Тайпчекер в Swift (инструмент проверки типов) постоянно улучшается, пусть раньше и был узким местом для производительности при компиляции.
⏳ В 2016 году Джордан Роуз добавил флаг компилятора Swift, который выдавал предупреждения в Xcode для функций, которые слишком долго компилировались или, если выразиться точнее, слишком долго проверялись.
А с Xcode 9 появился новый, аналогичный флаг для проверки выражений.
Речь ниже пойдёт о следующих двух флагах-warn-long-function-bodies
Bryan Irace и Soroush Khanlou изначально описали флаг -warn-long-function-bodies
. Вы можете указать порог в миллисекундах, при достижении которого будет выдаваться предупреждение.
Например: -Xfrontend -warn-long-function-bodies=100
будет выдавать предупреждение в Xcode для любой функции, проверка типа которой занимает более 100 мс.
Этот флаг всегда считался экспериментальным, как отметил Джордан в своем оригинальном коммите, но он всё ещё актуален.-warn-long-expression-type-checking
С Xcode 9 появился новый аналогичный флаг для тайпчекинга выражений, а не только для функций. Однако на этот раз флаг появился в официальных примечаниях к выпуску Xcode 9 GM.
Компилятор может предупреждать нас с помощью этого флага об отдельных выражениях, проверка типов которых занимает много времени.
💡 Советы по использованию
Имейте в виду, что если порог слишком низкий, например 10 мс, то вы получите массу предупреждений, которые невозможно исправить.
Стоит немного поэкспериментировать со значениями, чтобы найти по-настоящему узкие места. Автор этой статьи предлагает начать с 200, а если ваш проект крупный - с 500, и пытаться уменьшить его с течением времени.
Иначе вы потратите много времени, пытаясь заставить все функции и выражения компилироваться менее чем за 200 мс.
Кроме того, рекомендуется использовать эти флаги только для конфигураций сборки DEBUG.
@iOS Dev
BY iOS Dev

Share with your friend now:
tg-me.com/iosdev/513