какой код выполнится быстрее?

программирование Delphi скорость циклы

for k:=2 to n do
begin
if x[k]>yk then S:=S+y[k]-x[k];
if (x[k]<=yk) and (y[k]<yk)then S:=S+yk-x[k];
end;

или

for k:=2 to n do
begin
if x[k]>yk then S:=S+y[k]-x[k]
else
if y[k]<yk then S:=S+yk-x[k];
end;


Примечание:
Равно не забыл во втором коде. Такое задание.
Ответы:
Второй
Возможно второй (в отличие от первого там есть шанс, что второй иф будет пропущен в силу истинности выражения. В первом же мы безусловно делаем 2 проверки [причем во второй у нас более сложное логическое выражение из-за оператора "и"]), но на самом деле если разница и будет, то в каких-то долях миллисекунд. Проще замер сделать :).
первый код выполнит 2 if (а это довольно "медленная" оператор) вместо 1 во втором коде.
дополнительно во втором if первого оператора сложнее условие (с оператором and).
по сумме сказанного второй выигрывает по скорости.
по использованию памяти вроде равнозначны
другий швидший... на скільки? дивись:


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.