172 похожих чатов

Правильно понимаю, что расставив уровни доступа мы в том числе

оптимизируем скорость работы?

20 ответов

15 просмотров

Да

Ivan- Автор вопроса
Oleksandr Oliinyk
Да

а что если мы не поставим final перед классом и не унаследуемся от него, то компилятор сделает этот класс статик диспатч?

нет, это не влияет на скорость работы, не слушай, исключение open/public для межмодульного взаимодейтвия

Ivan- Автор вопроса
M53
если включен WMO

включенный WMO тоже съедает ресурсы?

Ivan
включенный WMO тоже съедает ресурсы?

ресурсы компилятора во время компиляции разве что… WMO это просто сборка всех файлов в один обьект, чтобы компилятор смог все лучше оптимизмировать: дженерики, инлайнинг, автоматичкие файналы для классов и тд

Ivan- Автор вопроса
M53
ресурсы компилятора во время компиляции разве что…...

сейчас вычитал, при включенном wmo скорость компиляции наоборот уменьшается https://habr.com/ru/post/317298/

Ivan
сейчас вычитал, при включенном wmo скорость компил...

не знаю что там, это статья 2016 года, только что проверил на своем проекте, сборка с wmo 25 сек, без 20, икскод последняя бета

M53
нет, это не влияет на скорость работы, не слушай, ...

Может мы разные вещи имеем под «скоростью работы». Но все final, let, private, влияют, если не ошибаюсь на уровне выполнения, что тот на тот же класс final не будет распространяться ресурс, так как он точно не будет иметь наследников, и нет смысла тратить время на его иерархию которой собственно нет.

Oleksandr Oliinyk
Может мы разные вещи имеем под «скоростью работы»....

Читай что такое модификаторы доступа, Файнал к ним не относится, даже если бы относился, в релизе компилятор его ставит автоматически https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html

M53
Читай что такое модификаторы доступа, Файнал к ним...

Я знаю, что такое модификаторы доступа. Я веду к тому, что есть же десятки статтей про performance optimization с помощью acces control. Все это фигня получается?

M53
Приведи пример статьи

Ты говоришь, что на оптимизацию влияют только модульные модификаторы?

Oleksandr Oliinyk
Ты говоришь, что на оптимизацию влияют только моду...

Да, потому что что с файнал, что с прайват, разницы нет, wmo включён по дефолту и он их расставит автоматически. А вот исключение как раз open и public, с open такое невозможно, потому что wmo работает только в рамках одного модуля

M53
Да, потому что что с файнал, что с прайват, разниц...

А именно вот этот абзац в статье получается фигня, или я ее не правильно понимаю? “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.”

M53
Да, потому что что с файнал, что с прайват, разниц...

К тому же, разве если он их расставит автоматически, мы не избавим его от этой работы расставив все самостоятельно вручную?

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта