Size: a a a

Rust — русскоговорящее сообществo

2020 March 07

AL

Andrey @ozkriff Lesnikov in Rust — русскоговорящее сообществo
из очевидного можно еще попробовать с ручной расстановкой инлайн атрибута поиграться
источник

B

Bulba in Rust — русскоговорящее сообществo
ДА! Вот только что понатыкал инлайнов и стало идеально
источник

B

Bulba in Rust — русскоговорящее сообществo
Внезапно инлайны и lto ускорили до 255 ns
источник

AL

Andrey @ozkriff Lesnikov in Rust — русскоговорящее сообществo
Значит эвристики оптимизаторов не сильно под твой код подходят, бывает
источник

B

Bogdan in Rust — русскоговорящее сообществo
Andrey @ozkriff Lesnikov
Значит эвристики оптимизаторов не сильно под твой код подходят, бывает
Там без инлайнов оно особо ничего сделать не может, так как без инлайна функции это набор ллвм байткода/скомпиленого кода машинного.


Инлайн авто не форсит инлайн, НО делает его возможным между крейтами


@victorbulba
источник

d

diabolo in Rust — русскоговорящее сообществo
Bogdan
Там без инлайнов оно особо ничего сделать не может, так как без инлайна функции это набор ллвм байткода/скомпиленого кода машинного.


Инлайн авто не форсит инлайн, НО делает его возможным между крейтами


@victorbulba
шикарный бред)
источник

B

Bulba in Rust — русскоговорящее сообществo
Проблема в том что я над каждой бы функцией тыкнул бы #[inline], но иногда это только хуже делает 🧐
источник

B

Bogdan in Rust — русскоговорящее сообществo
Или это старое? В документации сведей про это нислова
источник

B

Bulba in Rust — русскоговорящее сообществo
diabolo
шикарный бред)
почему бред?
источник

D

Denis in Rust — русскоговорящее сообществo
в LLVM есть проходы которые определяют InlineCost и InlineWeight на основе этого принимается решение инлайнить функцию или нет.
Притом на разных CPU у вас может быть разное ускорение/замедление, которое в свою очередь будет зависить от того сколько кеша у CPU.
Пихать везде Inline такое себе занятие.
источник

D

Denis in Rust — русскоговорящее сообществo
Пальцем в небо тыкаете, вместо того чтобы взять в руки perf и прочие тулзы и начать изучать магию, тобишь попытаться понять корень проблемы
источник

d

diabolo in Rust — русскоговорящее сообществo
Bulba
почему бред?
потому, что в большинстве случаев компилятор может и без подсказок отдать линкеру готовый код, но если ему как правильно сказано не хватило эвристики то мы и говорим компилятору — отдай inline=always, просто не надо этим слишком злоупотреблять
источник

D

Denis in Rust — русскоговорящее сообществo
diabolo
потому, что в большинстве случаев компилятор может и без подсказок отдать линкеру готовый код, но если ему как правильно сказано не хватило эвристики то мы и говорим компилятору — отдай inline=always, просто не надо этим слишком злоупотреблять
+1
источник

B

Bogdan in Rust — русскоговорящее сообществo
diabolo
потому, что в большинстве случаев компилятор может и без подсказок отдать линкеру готовый код, но если ему как правильно сказано не хватило эвристики то мы и говорим компилятору — отдай inline=always, просто не надо этим слишком злоупотреблять
Так что, для последних версий языка inline без always уже не нужен?
источник

B

Bogdan in Rust — русскоговорящее сообществo
Я так понимаю флаг lto заставляет включать в либы байткод?
источник

d

diabolo in Rust — русскоговорящее сообществo
Bogdan
Так что, для последних версий языка inline без always уже не нужен?
нужен, но не всегда эффективен. есть ситуации, когда лучше вообще без инлайна
источник

dp

dark pit in Rust — русскоговорящее сообществo
источник

dp

dark pit in Rust — русскоговорящее сообществo
левые хакерские тулзы в репозитории libc
источник

dp

dark pit in Rust — русскоговорящее сообществo
странно, что там Nintendo switch, но не Nintendo 3DS.  ведь используется тот же тулчейн devkitPro, по-сути.
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
Bogdan
Я так понимаю флаг lto заставляет включать в либы байткод?
биткод, и раст и так его включает в rlib, это дефолт
источник