Влияет ли блок begin-end на производительность условного оператора? - PullRequest
6 голосов
/ 30 июня 2010

Я работаю с Delphi. Есть ли разница в производительности, если мы пишем if condition по-разному? Например:

if (condition) then
   someVar := someVal
else
   someVar := someOtherVal;  

Или мы можем написать:

if (condition) then begin
   someVar := someVal;
end else begin
   someVar := someOtherVal;
end;  

Я предпочитаю второй вариант только потому, что он выглядит лучше, чем первый.

Ответы [ 4 ]

24 голосов
/ 30 июня 2010

Нет, разницы в производительности нет, созданный код будет идентичным.

Аспект, который может быть важнее, чем второй вариант, выглядит лучше, так как он лучше для сопровождения. Если вам нужно добавить еще один оператор в блок else, вы не забудете случайно добавить начало и конец, что приведет к тому, что этот оператор окажется вне if и всегда будет выполняться.

3 голосов
/ 30 июня 2010

Это не повлияет на производительность.

begin и end сообщают компилятору, где начинается и заканчивается блок кода, но вычисление там не требуется.

2 голосов
/ 30 июня 2010

Begin и End не замедляют ваш код, как уже говорили другие. Я пишу другой ответ, чтобы побудить вас еще более четко ВСЕГДА использовать начало и конец всякий раз, когда вы можете их использовать.

Хорошо быть либеральным, используя Begin и End, и не беспокоиться о том, что они замедляют вас (потому что они этого не делают).

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

Это случилось со мной много. Вы можете попасть в беду, когда вставите строку в место, где нет операторов начала и конца. Затем вы в конечном итоге почесываете голову, гадая, что вы сделали, что сломало ваш код. Начало-конец-везде, даже там, где это не нужно, является стандартной процедурой для многих кодеров Delphi.

1 голос
/ 30 июня 2010

Единственное, что вы должны помнить о if-elseif-else, это держать общие случаи в вашем коде до крайних случаев, чтобы оценивать как можно меньше условий.

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