оптимизируем скорость работы?
а что если мы не поставим final перед классом и не унаследуемся от него, то компилятор сделает этот класс статик диспатч?
если включен WMO
нет, это не влияет на скорость работы, не слушай, исключение open/public для межмодульного взаимодейтвия
включенный WMO тоже съедает ресурсы?
ресурсы компилятора во время компиляции разве что… WMO это просто сборка всех файлов в один обьект, чтобы компилятор смог все лучше оптимизмировать: дженерики, инлайнинг, автоматичкие файналы для классов и тд
сейчас вычитал, при включенном wmo скорость компиляции наоборот уменьшается https://habr.com/ru/post/317298/
не знаю что там, это статья 2016 года, только что проверил на своем проекте, сборка с wmo 25 сек, без 20, икскод последняя бета
Как это не влияет, если же влияет?)
Может мы разные вещи имеем под «скоростью работы». Но все final, let, private, влияют, если не ошибаюсь на уровне выполнения, что тот на тот же класс final не будет распространяться ресурс, так как он точно не будет иметь наследников, и нет смысла тратить время на его иерархию которой собственно нет.
https://developer.apple.com/swift/blog/?id=27 @myrza_ivan
Читай что такое модификаторы доступа, Файнал к ним не относится, даже если бы относился, в релизе компилятор его ставит автоматически https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html
Я знаю, что такое модификаторы доступа. Я веду к тому, что есть же десятки статтей про performance optimization с помощью acces control. Все это фигня получается?
Приведи пример статьи
Ты говоришь, что на оптимизацию влияют только модульные модификаторы?
Да, потому что что с файнал, что с прайват, разницы нет, wmo включён по дефолту и он их расставит автоматически. А вот исключение как раз open и public, с open такое невозможно, потому что wmo работает только в рамках одного модуля
А именно вот этот абзац в статье получается фигня, или я ее не правильно понимаю? “When more experienced developers look at the code they write, they consider how it fits into the project they are working on. The implementation of a method is only part of the solution. Should it be possible for ViewController subclasses to override the fetchNotes() method? If the answer is no, then you should attach the private or fileprivate keyword. This not only makes sense in the context of access control, it also improves performance. Why is that? When the compiler inspects the fetchNotes() method, it realizes that it is declared as private, implying that the method cannot be overridden by subclasses. The compiler picks up this clue and safely infers final on the method declaration. Whenever the final keyword is attached to a method declaration, calls to that method can be dispatched statically instead of dynamically, resulting in a tiny performance gain.”
К тому же, разве если он их расставит автоматически, мы не избавим его от этой работы расставив все самостоятельно вручную?
Обсуждают сегодня