Информация об изменениях

Сообщение Re[8]: Rust и экология от 22.02.2022 17:34

Изменено 22.02.2022 17:35 vsb

Re[8]: Rust и экология
Здравствуйте, T4r4sB, Вы писали:

vsb>>Ну и вообще проверки не такие уж и страшные, когда они никогда не срабатывают. Процессор просто их игнорирует и считает дальше. Если сработают — будет медленно. Пока не срабатывают — вообще пофиг, 1 такт это ничто.


TB>Ты хочешь сказать, что предсказать ветвлений позволяет тратить 1 такт при виде инструкции перехода, если по ней ни разу не было перехода во вторую ветку? Я просто не очень в теме, потому и спрашиваю


Я могу ошибаться, но моё понимание такое, что компилятор может "подсказать" процессору путь, по которому программа пойдёт с большей вероятностью. И ничего тут предсказывать не придётся. Если предсказание было неверное, то конвеер остановится, откатится и тд, но пока оно верное, всё будет быстро. тут немного написали, в gcc для этого есть макрос __builtin_expect
Re[8]: Rust и экология
Здравствуйте, T4r4sB, Вы писали:

vsb>>Ну и вообще проверки не такие уж и страшные, когда они никогда не срабатывают. Процессор просто их игнорирует и считает дальше. Если сработают — будет медленно. Пока не срабатывают — вообще пофиг, 1 такт это ничто.


TB>Ты хочешь сказать, что предсказать ветвлений позволяет тратить 1 такт при виде инструкции перехода, если по ней ни разу не было перехода во вторую ветку? Я просто не очень в теме, потому и спрашиваю


Я могу ошибаться, но моё понимание такое, что компилятор может "подсказать" процессору путь, по которому программа пойдёт с большей вероятностью. И ничего тут предсказывать не придётся. Если предсказание было неверное, то конвеер остановится, откатится и тд, но пока оно верное, всё будет быстро. тут немного написали, в gcc для этого есть макрос __builtin_expect

На самом деле современные процессоры содержат в себе всякие эвристики и скорей всего такие вещи даже без подсказок будут выполнять быстро. AMD там чуть-ли не простейшие нейросети засовывает.