![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как оптимизировать код? [D7, XP]
tytus © (2008-06-06 16:47:00)Доброго дня мастера. Есть ткакой код
for i:=0 to 281 do
if ((j>=156)and(j<=211))or((j>=226)and(j<=281))then
как можно его оптимизировать, чтобы получить макс. быстродействие программы?
Игорь Шевченко (2008-06-06 19:32:00) [1]
> Просто когда-то читал, что операторы перехода по условию
> требуют много времени на обработку.
Это ты не то читал
tytus (2008-06-06 17:23:00) [2]>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).
SergeyIT (2008-06-06 17:16:00) [3]А может
//выполняем код и т.д.
жрет гораздо больше процессорного времени? Тогда циклы оптимизировать особого смысла не имеет.
Опять перепутали if i while?
tytus (2008-06-06 17:12:00) [4]>Palladin © (06.06.08 17:09) [6]
тоже вариант. тогда на 4 цыкла
1)от 0..155
2)от 156..211
3)от 212..225
4)от 226 до 281
Palladin (2008-06-06 17:09:00) [5]
> tytus (06.06.08 17:06) [5]
а на три цикла с разными диапазонами религия не позволяет разбить?
tytus (2008-06-06 17:09:00) [6]>SergeyIT © (06.06.08 17:05) [4]
да, опечатка, должно быть i
tytus (2008-06-06 17:06:00) [7]этот код может вызываться 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;
SergeyIT (2008-06-06 17:05:00) [8]Не понятно - i и j это опечатка или разные переменные?
LightRipple (2008-06-06 17:00:00) [9]> [0] tytus (06.06.08 16:47)
> Доброго дня мастера. Есть ткакой код
Вычислить значение ((j>=156)and(j<=211))or((j>=226)and(j<=281))
до цикла, а не пересчитывать его 282 раза :)
Anatoly Podgoretsky (2008-06-06 16:58:00) [10]> tytus (06.06.2008 16:47:00) [0]
for i:=156 to 281 do
Ega23 (2008-06-06 16:52:00) [11]а чем не нравится-то?