Как стать автором
Обновить

Комментарии 8

https://yarchive.net/comp/linux/cmov.html

Линус называл инструкцию CMOV "a piece of CRAP". Интересно, с тех пор что-то изменилось?

CMOV исполняется за 1 такт, а не 10, как во времена P4.

В данном сообщении он пишет про

"if you KNOW the branch is totally unpredictable, cmov is often good for performance"

Как раз случай двоичного поиска может соответствовать этому описанию (но это не точно).

Могу ошибаться, но вроде многие процы, если сравнение короткое, типа Clamp, Min, Мах, выполняют обе ветки и это быстро. По сути как и условный мув.

А можно посмотреть код бенчмарков и на каких тестовых данных строились эти графики?

Можно убрать ветвление внутри цикла поменяв:

if (compare(begin[step], value))
            begin += step;

на

begin += step * compare(begin[step], value)

Тогда компилятору будет сложнее ошибиться

При ссылках из текста на номера строк в коде, очень хочется их видеть, а не считать строки самостоятельно. Нельзя ли их добавить в цитаты кода в статье?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации