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

Вниз

Как оптимизировать код?   Найти похожие ветки 

 
tytus   (2008-06-06 16:47) [0]

Доброго дня мастера. Есть ткакой код

for i:=0 to 281 do
if ((j>=156)and(j<=211))or((j>=226)and(j<=281))then


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


 
Ega23 ©   (2008-06-06 16:52) [1]

а чем не нравится-то?


 
Anatoly Podgoretsky ©   (2008-06-06 16:58) [2]

> tytus  (06.06.2008 16:47:00)  [0]

for i:=156 to 281 do


 
LightRipple ©   (2008-06-06 17:00) [3]

> [0] tytus   (06.06.08 16:47)
> Доброго дня мастера. Есть ткакой код

Вычислить значение ((j>=156)and(j<=211))or((j>=226)and(j<=281))
до цикла, а не пересчитывать его 282 раза :)


 
SergeyIT ©   (2008-06-06 17:05) [4]

Не понятно - i и j это опечатка или разные переменные?


 
tytus   (2008-06-06 17:06) [5]

этот код может вызываться 100 000 раз.
и нужно именно от 0 до 281.
i:=0;
while i<281 do
begin
 if i=156 then
 while i<=211 do
 begin
   //выполняем код
   inc(i);
 end else
 if i=226 then
 while i<281 do
 begin
   //выполняем другой код
   inc(i);
 end else begin
    //выполняем исче однин код
    inc(i);
 end;
end;


 
Palladin ©   (2008-06-06 17:09) [6]


> tytus   (06.06.08 17:06) [5]

а на три цикла с разными диапазонами религия не позволяет разбить?


 
tytus   (2008-06-06 17:09) [7]

>SergeyIT ©   (06.06.08 17:05) [4]
да, опечатка, должно быть i


 
tytus   (2008-06-06 17:12) [8]

>Palladin ©   (06.06.08 17:09) [6]
тоже вариант. тогда на 4 цыкла
1)от 0..155
2)от 156..211
3)от 212..225
4)от 226 до 281


 
SergeyIT ©   (2008-06-06 17:16) [9]

А может
//выполняем код и т.д.
жрет гораздо больше процессорного времени? Тогда циклы оптимизировать особого смысла не имеет.
Опять перепутали if i while?


 
tytus   (2008-06-06 17:23) [10]

>SergeyIT ©   (06.06.08 17:16) [9]
да вроде не перепутал.
Ладно, спасибо всем.
Действительно, нужно разбивать сложные цыклы
на более простые.

SergeyIT ©   (06.06.08 17:16) [9]
жрет гораздо больше процессорного времени?

да нет, код простенький.
Просто когда-то читал, что операторы перехода по условию
требуют много  времени на обработку.
имхо tytus   (06.06.08 17:06) [5] - должен решить проблему.
Вместо 282 операторов if , выполнится всего 3
(без учета while).


 
Игорь Шевченко ©   (2008-06-06 19:32) [11]


> Просто когда-то читал, что операторы перехода по условию
> требуют много  времени на обработку.


Это ты не то читал



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

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

Наверх




Память: 0.49 MB
Время: 0.019 c
2-1212689027
samael6
2008-06-05 22:03
2008.07.06
ReAlign


2-1212864651
ply
2008-06-07 22:50
2008.07.06
сделать первую букву заглавной


2-1213005331
Zabludshiy
2008-06-09 13:55
2008.07.06
Проблема с выполнением запроса в ADOquery


15-1211314606
NewZ
2008-05-21 00:16
2008.07.06
Разработка сайта.


2-1212709477
Soon
2008-06-06 03:44
2008.07.06
Задержка