|
|
  |
Разработка findcolor, findimage, Pure lua |
|
|
Cockney |
4.6.2022, 13:13
|
       
Master
Сообщений: 1.403
Регистрация: 22.6.2013 Группа: Пользователи Наличность: 22550
Пользователь №: 16.156

|
Цитата(DarkMaster @ 4.6.2022, 12:13)  дык там весь цикл один сплошной переход фактически без тела. Учитывая то, что иф статистически будет ложью, то все, что можно напредсказывать - делать следующий иф. В итоге получаем по сути прямой перебор. Хз в моем понимании все-таки тут особо предсказание ветвлений работать не будет, хотя могу и ошибаться.
Ну как бы есть разделение: то что видит компилятор, его задача сделать так, чтобы код был предсказуем по максимуму (тут как он оптимизирует и строит код вообще), и процессор - он в любом случае будет пытаться предсказать куда прыгать, ибо нет у него информации больше.
|
|
|
|
Cockney |
4.6.2022, 14:33
|
       
Master
Сообщений: 1.403
Регистрация: 22.6.2013 Группа: Пользователи Наличность: 22550
Пользователь №: 16.156

|
Цитата(DarkMaster @ 4.6.2022, 14:19)  То, что он будет пытаться это понятно. Впорос в том будут ли эти попытки рабочими (IMG: style_emoticons/default/smile.gif) Спасибо за линки. Так я же пишу, что чем лучше сгенерирован код и чем больше "удачных" данных, тем лучше результат. например, условно, 2 раза был переход по result[0] < result[1], а 6 раз нет - результат такой себе, кеш предиктора сбит и он вынужден просчитывать переход заново. А вот в ситуации когда все 8 раз был переход по result[0] < result[1] - все супер, следующий прыжок скорее всего будет вытянут из кеша без проверок. Тут нельзя ничего гарантировать, надо просто программу приводить к минимуму по сложности ветвлений (циклы тоже ветвления) джит работает по такому же принципу: чем горячее блок кода, тем он больше вероятность реальной компиляции, но только с тем набором аргументов (если мы говорим о функции), которые чаще всего используются
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|