Главная страница
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.018 c
11-1190891758
max727
2007-09-27 15:15
2008.07.06
KolFTP Demo не компилится


2-1212738159
GreyWolf
2008-06-06 11:42
2008.07.06
Архитектура приложения


15-1211459612
matt
2008-05-22 16:33
2008.07.06
Даунгрейд с Windows Vista


2-1212732220
кот
2008-06-06 10:03
2008.07.06
создание компонента


2-1212882595
ply
2008-06-08 03:49
2008.07.06
сохранить катинку в БД