оптимизация оператора if, имеющего всегда одинаковое значение после первой оценки - PullRequest
0 голосов
/ 10 ноября 2018

Существуют ли какие-нибудь трюки с макросами или оптимизацией в C, которые могут сказать программе: оператор if будет истинным или ложным, но после первой оценки он всегда будет иметь одно и то же значение, например: допустим, вы хотите создать программу, который сначала будет анализировать некоторый аргумент, а затем будет проходить длительное время, на каждой итерации вы должны отображать некоторую информацию определенным образом (выбирается по заданным аргументам), поэтому каждый раз вы будете спрашивать, были ли (некоторые аргументы заданы -> печатать информацию таким образом), иначе (печатать информацию другим способом), но это условие всегда будет истинным или ложным, поскольку часть синтаксического анализа находится в начале и не может быть изменена при вводе в то время.

1 Ответ

0 голосов
/ 10 ноября 2018

Если условие проверки дорогое, и вы знаете, сколько раз вы должны выполнить цикл, вы можете сделать это.

if(Time_expensive_condition_check){
    while(number_of_iterations){
        //your code here
        number_of_iterations = number_of_iterations - 1
    }
}

Но если проверка вашего состояния не является дорогостоящей по времени и требует только O (1), тогда оптимизации больше нет, поскольку на каждой итерации вы должны проверять, нужно ли остановить или продолжить цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...