Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.02.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.005 c
2-1229785294
buzb
2008-12-20 18:01
2009.02.01
Как сделать listbox полосатым


2-1229423666
9899100
2008-12-16 13:34
2009.02.01
Property


2-1229686658
Дмитрий
2008-12-19 14:37
2009.02.01
сохранение DFM


2-1229428657
1991
2008-12-16 14:57
2009.02.01
Оптимизация


15-1228367482
boriskb
2008-12-04 08:11
2009.02.01
Задача по информатике. 2-ой класс





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский