Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
3-75131
GOGA
2003-11-30 18:38
2003.12.23
непонятно работает UpdateSQL


1-75211
Igit
2003-12-03 12:09
2003.12.23
Постоянно сжирает память


7-75421
OTMOPO3OK
2003-10-03 12:13
2003.12.23
Как сделана AIDA: инфа от S.M.A.R.T.; инфа о сост. материнки


14-75323
Думкин
2003-12-01 06:38
2003.12.23
С днем рождения! 1 декабря.


1-75198
denmin
2003-12-11 09:08
2003.12.23
Проблема с QuickRep




   Наверх