Самый быстрый - относительный термин. Для какой платформы это? у него есть кеш? Если он имеет кэш, он, скорее всего, на платформе, которая может выполнить добавление за один такт, поэтому нет необходимости оптимизировать добавление. Следующая проблема - сравнение - это вычитание, вычитание и сложение. Проходят по одному и тому же alu и занимают то же время, что и сложение, поэтому для большинства платформ старые и новые торговые сравнения (вычитание) для сложения ничего не спасут, в итоге вы смотрите на стоимость ветвления, сбрасывание конвейера и т. д. Даже с платформой ARM вы все равно не используете ни одного, ни несколько. Первое, что вы должны сделать для такой оптимизации, это посмотреть на вывод компилятора, какие инструкции выбирает компилятор? (при условии, что это компилятор, который использует каждый компилятор этого кода и те же параметры компилятора и т. д.). Например, на чипе, где add / sub занимает больше часов, или значительное количество часов, xor или и / или операции могут занимать меньше часов. Вы можете сделать сравнение с нулем на некоторых процессорах, используя побитовую операцию, сохраняя часы. Компилятор понял это и использовал эту более быструю операцию?
Как ответ общего характера на ваш вопрос, основанный на существующих процессорах и шансах, которые вы используете или не используете. Одна строка:
tempAnswer = work1 + work2 + toCarry;
- самый оптимизированный код. Компилятор превратит это в две или три инструкции для большинства процессоров или процессоров, которые, я полагаю, вы, вероятно, используете.
Больше всего вас беспокоит не добавление, не сравнение, не предсказание ветвлений или ветвлений, а самое большое беспокойство - то, что эти переменные хранятся в регистрах. Если им всем придется возвращаться в стек / оперативную память, это замедлит ваш цикл, даже с кэшем. Другой код в цикле будет определять это, и есть некоторые вещи, которые вы можете сделать в своем коде, чтобы минимизировать использование регистров, что позволяет надеяться, что они будут основаны на регистрах. Опять же, разберите ваш код, чтобы увидеть, что делает компилятор.