Главная страница
    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.006 c
2-1229451089
Nyashka
2008-12-16 21:11
2009.02.01
Паскальчик.


15-1228576006
Artem
2008-12-06 18:06
2009.02.01
Литература COM в Delphi


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


15-1222413251
Василий Жогарев
2008-09-26 11:14
2009.02.01
PostgreSQL, MySQL, IB, FB


2-1229535561
smartleds
2008-12-17 20:39
2009.02.01
Ошибка при сохранении файла





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