Главная страница
    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.46 MB
Время: 0.037 c
2-1212577251
DON
2008-06-04 15:00
2008.07.06
Вставка хелпа в проект


2-1213036187
Slew
2008-06-09 22:29
2008.07.06
диски


15-1211280109
TStas
2008-05-20 14:41
2008.07.06
Ф-ция, возвращающая указатель на СОМ-сервер


2-1212748188
ply
2008-06-06 14:29
2008.07.06
эелементарная задача с DBEdit


15-1211437400
Fr1K
2008-05-22 10:23
2008.07.06
Web Chat





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский