Size: a a a

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

2020 September 12

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Эрик
Надо на годболте с opt-level 3 посмотреть, что компилятор сделает из этих битовых штук.
+
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Эрик
Тогда (u >> 4, u & (!0 >> 4))
А что это за магия !0? 😃
источник

Э

Эрик in Rust — русскоговорящее сообществo
Adv0cat
А что это за магия !0? 😃
0.not() == 111111111111111111111111111
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Эрик
0.not() == 111111111111111111111111111
Ну т.е. замени я эту магию на a & 0b00001111 Будет так же быстро, но более понятно?) Или такой вариант чем-то хуже?) Или a & 0b1111
источник

Э

Эрик in Rust — русскоговорящее сообществo
Когда поработаешь немного с битами, поймёшь, что !0 это просто, быстро и удобно.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Не, не делает rol/ror, даже на opt-level=3
источник

Э

Эрик in Rust — русскоговорящее сообществo
Хотя вообще, не слишком понятно как rol/ror должен тут сработать, если он биты сохраняет, а нам надо только четыре из восьми оставить.
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Эрик
Когда поработаешь немного с битами, поймёшь, что !0 это просто, быстро и удобно.
потому что не очень к нему приводимо
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Эрик
Когда поработаешь немного с битами, поймёшь, что !0 это просто, быстро и удобно.
От уже ж эта магия 😄
Ну в общем как я и думал, что (a >> 4, a & 0b1111) само оптимально, или таки нужно что-то типо rol/ror использовать?)
источник

IB

Ivan Boldyrev in Rust — русскоговорящее сообществo
Есть методы rotate_left/rotate_right, но в самом деле, зачем они?
источник

Э

Эрик in Rust — русскоговорящее сообществo
Нам верхние биты в нижние перемещать надо, так что быстрее shr нет ничего, а нижние биты компилятор всё равно к and приведёт.
источник

Э

Эрик in Rust — русскоговорящее сообществo
И опять компилятор оказался умнее.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Adv0cat
От уже ж эта магия 😄
Ну в общем как я и думал, что (a >> 4, a & 0b1111) само оптимально, или таки нужно что-то типо rol/ror использовать?)
Просто пиши как правильно должно быть. Эта фигня в релизе соптимизируется всё равно.
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Эрик
Просто пиши как правильно должно быть. Эта фигня в релизе соптимизируется всё равно.
👍 Понял, спасибо огромное! 😊
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ну и пиши так, чтобы понятно было.
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Эрик
Ну и пиши так, чтобы понятно было.
Ну эт да, я пока эту магию использовать не буду, но возьму на заметку 😄
источник

V

Vladimir in Rust — русскоговорящее сообществo
Boris Vinogradov
да, там вообще битовые операции включая сдвиги однотактовые
Это и в х86 должно быть однотактным. Аппаратная реализация же примитивная
источник
2020 September 13

KR

Kai Ren in Rust — русскоговорящее сообществo
Kitsu
redis vs redis_async, есть ли повод предпочесть какой-то из этих крейтов? (нужен пабсаб + асинки)
Юзаем redis + deadpool-redis. Нареканий не было.
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
Эрик
И опять компилятор оказался умнее.
Даже если написать наиболее тупым способом компилятор выдает такой же код. "Микрооптимизации" сейчас мало смысла имеют в 99% случаев
https://godbolt.org/z/b1njqE
источник

X

XÆA-XII in Rust — русскоговорящее сообществo
red75prime
А оно точно работает как нужно? Там случайно не арктангенс надо брать? Если это углы лучей к позициям символов на прямоугольной решётке, то они не должны равномерно делить fov.
Я не знал об этом
источник