Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.23;
Скачать: CL | DM;

Вниз

Стоит ли разбивать циклы в критичных случаях?   Найти похожие ветки 

 
Makhanev A.S. ©   (2003-12-09 00:30) [0]

Есть ли большая разница в производитеьснити между:

for i := 0 to 100 do
begin
A(i);
B(i);
end;


и

for i := 0 to 100 do
begin
A(i);
end;
for j := 0 to 100 do
begin
A(j);
end;


Вызовы A и B зотелось бы разделить.
этот цикл (первый) вызывается постоянно, т.к. программа всё время висит в памяти и кое-что делает.
Цикл A и B занимают относительно много времени.

Каковы будут (если будут) потери от разделения исходного цикла на 2?


 
Германн ©   (2003-12-09 03:04) [1]

Лучше всего - экспериментировать самому. Твоя задача - тебе и знать ее и решать, что лучше. А общих ответов, имхо, тут врядли есть.


 
SkyRanger ©   (2003-12-09 03:08) [2]

Скорость упадет вдвое...
А вообще лучьше используй

while I<=100 and J<=100 do
begin
A(I);
B(J);
Inc(I);
Inc(J);
end;


Причем можешь увеличивать и ученьшать переменные так как тебе надо и если I достигнет конца, то пока J не достигнет конца...


 
Юрий Зотов ©   (2003-12-09 09:01) [3]

> SkyRanger © (09.12.03 03:08) [2]

Насчет "скорость упадет вдвое" - это, пожалуй, поспешно.

Насчет совета заменить for на while - если нужно замедлить программу, то это хороший совет.

Насчет двух параметров цикла (i и j) вместо реально нужного одного - а почему уж тогда сразу не пять?

> Makhanev A.S.

1. Цикл for - самый быстрый по сравнению c while и repeat, особенно при включенной оптимизации. Стоит иметь это в виду.

2. Вариант с двумя циклами медленнее, потому что в двух циклах служебных операций больше, чем в одном (если только оптимизирующий компилятор не окажется настолько умным, что все равно объединит два цикла в один). Но реально основную часть времени займет выполнение A и B, поэтому вряд ли разница будет заметной.


 
Makhanev A.S. ©   (2003-12-10 01:02) [4]


> Юрий Зотов © (09.12.03 09:01) [3]

Я сильно упростил вопрос.
Просто стояла дилемма: по уму разбить цикл и потерять некий n производительсности - или не разбивать цикл и приобрести n производительности + пару вопросов в другой части программы.

Весь вопрос собственно в измерении этого n.
Чтож, думаю, что лучше безопасный код.
Попробую разбить.

Всем спасибо!



Страницы: 1 вся ветка

Текущий архив: 2003.12.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
8-75280
Ded Moroz
2003-08-26 01:15
2003.12.23
Звук


14-75363
Igor_thief
2003-11-29 14:32
2003.12.23
Иконки из длл


4-75458
mio
2003-10-28 18:12
2003.12.23
Разделение


14-75398
Бухгалтер
2003-11-28 10:37
2003.12.23
Глюк с клавой


6-75298
ChayNik
2003-10-27 04:17
2003.12.23
Помогите Чайнику