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

Вниз

Оптимизация   Найти похожие ветки 

 
1991   (2008-12-16 14:57) [0]

Помогите с оптимизацией: Можно ли сократить не выполняя несколько раз проверок?

if ((mInId <> -1) and (mId = mInId))
        or ((cInId <> -1) and (cId = cInId))
     then
       cItem.Expand;
     if (mInId <> -1) and (mId = mInId) then
       fFocusItem := mItem;
     if (cInId <> -1) and (cId = cInId) and not Assigned(fFocusItem)
     then
       fFocusItem := cItem;


 
Jeer ©   (2008-12-16 15:00) [1]

А что беспокоит ?


 
1991   (2008-12-16 15:03) [2]

Может что лишнее написал. Например по 2 раза проверяются

if (mInId <> -1) and (mId = mInId)
и
if (cInId <> -1) and (cId = cInId)


 
Jeer ©   (2008-12-16 15:09) [3]

Так устроит ? :))

R1 := ((mInId <> -1) and (mId = mInId));
R2 := ((cInId <> -1) and (cId = cInId));

if (R1 or R2) then
      cItem.Expand;
if R1 then
   fFocusItem := mItem;
if R2 and not Assigned(fFocusItem)  then
   fFocusItem := cItem;

Если не учитывать событийность, то можно еще сократить, но..

А вообще-то, компилятору пофиг такие упражнения с исходниками.


 
1991   (2008-12-16 15:15) [4]


> Так устроит ? :))

Спасибо. Так выглядит действительно лучше..


 
Ega23 ©   (2008-12-16 15:38) [5]

Project -> Options -> Compiler -> Code Generation -> Optimization галку поставь.
:о)


 
Правильный$Вася   (2008-12-16 15:51) [6]


> Optimization галку поставь.

нельзя ж во всем на железку полагаться
иногда и самому думать надо
а то как батонокидательство будет


 
Ega23 ©   (2008-12-16 15:58) [7]


> нельзя ж во всем на железку полагаться
> иногда и самому думать надо
> а то как батонокидательство будет


Экономить не там надо (хотя и в такой ситуации лучше экономить).
А, например, в такой:

function ReverseString(const s : string) : string;
var
 i : Integerl
begin
 Result := "";
 for i:= Length(s) downto 1 do Result := Result + s[i];
end;


 
clickmaker ©   (2008-12-16 16:48) [8]

> А, например, в такой:
>
> function ReverseString

я бы через перестановку символов сделал.
Без использования дополнительной переменной, как в лабах задают -)


 
Ega23 ©   (2008-12-16 17:00) [9]


> я бы через перестановку символов сделал.
> Без использования дополнительной переменной, как в лабах
> задают -)


Я вот этого как-то понять не могу. Совсем без дополнительной переменной? Или таки один Char можно завести?


 
clickmaker ©   (2008-12-16 17:14) [10]

если исходную строку менять нельзя, то без переменной не получится. Ибо Result уже будет )
если var, то можно
либо так
Len := Length(s);
SetLength(Result, Len);
for i:=1 to Len do
 Result[i] := s[Len-i+1];


 
Правильный$Вася   (2008-12-16 17:42) [11]


> clickmaker ©   (16.12.08 17:14) [10]

у тебя вон и Len, и i
целая орда переменных :))



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

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

Наверх




Память: 0.49 MB
Время: 0.025 c
3-1213861475
кот
2008-06-19 11:44
2009.02.01
не проходят запросы


15-1228647129
Slider007
2008-12-07 13:52
2009.02.01
С днем рождения ! 7 декабря 2008 воскресенье


6-1197769024
Real
2007-12-16 04:37
2009.02.01
TNMFTP и большие файлы


15-1227739103
DillerXX
2008-11-27 01:38
2009.02.01
Вопрос к пользовтелям googlemail (gmail)


2-1229690059
ParaSenok
2008-12-19 15:34
2009.02.01
Запуск консольного приложения