Форум: "Основная";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];
ВнизСтоит ли разбивать циклы в критичных случаях? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c