мне было интересно, если есть какие-либо преимущество в скорости, чтобы делать случай В против случая А (или наоборот) в следующем:C Скорость ++ и логический поток
bool test1(){
// Check something, return true/false
}
bool test2(){
// Check something, return true/false
}
Case А
if(test1() && test2()){
//execute XYZ
}
Случай B
if(test1()){
if(test2()){
//execute XYZ
}
}
Я имею в виду, если подпрограммы, участвующие в test1()
и test2()
, занимают некоторое время, чтобы выполнить, тогда интуитивно некоторые люди могут подумать, что Case B может работать быстрее, так как test2()
будет выполняться только в том случае, если тест 1 является истинным или является достаточно умным компилятором для определения в логическом последовательность случая А, что, как только test1(...)
не удастся, тогда не нужно проверять test2(...)
?
Возможно выше эквивалентны, может кто-то дайте мне знать ...
Спасибо, поэтому, если вы знаете, что 'test2()' будет возвращать ложь чаще, чем 'test1()', более выгодно писать 'test2() && test1()' over 'test1() && test2 () '? –
В равной степени, если test2 занимает намного больше времени для выполнения, вы можете сначала запустить test1. – camelCase
Комментарий, который я сделал в другом месте: более полный ответ должен содержать утверждение «... if' operator && 'не был перегружен.Если это так, то логический оператор обрабатывается больше как нормальная функция, и оба выражения будут оценены. » –