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

Вниз

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

 
Ak47   (2009-08-27 14:51) [0]

как будет более правильно и оптимально:

procedure TForm1.event_hlb2CompareItems(ListBox: TCustomListBox_;
 Section: THeaderSection_; Index1, Index2: Integer; var Result: Integer);
var
 i1, i2: TPItem2;
begin
 i1 := TPItem2(ListBox.Items.Objects[Index1]);
 i2 := TPItem2(ListBox.Items.Objects[Index2]);
 case Section.Tag of
   0: Result := CompareValue(i1.Item.ID, i2.Item.ID);
   4: Result := CompareValue(i1.Item.Memory, i2.Item.Memory);
   6: Result := CompareValue(i1.Item.Threads, i2.Item.Threads);
 end;
end;

// или

procedure TForm1.event_hlb2CompareItems(ListBox: TCustomListBox_;
 Section: THeaderSection_; Index1, Index2: Integer; var Result: Integer);
var
 i1, i2: TPItem2;
 P: Point;
begin
 i1 := TPItem2(ListBox.Items.Objects[Index1]);
 i2 := TPItem2(ListBox.Items.Objects[Index2]);
 case Section.Tag of
   0: P := Point(i1.Item.ID, i2.Item.ID);
   4: P := Point(i1.Item.Memory, i2.Item.Memory);
   6: P := Point(i1.Item.Threads, i2.Item.Threads);
 end;
 Result := CompareValue(P.X, P.Y);
end;


 
Ega23 ©   (2009-08-27 14:58) [1]

Оптимально - пофигу.
Правильно - в case else добавить.


 
Сергей М. ©   (2009-08-27 15:02) [2]


> как будет более правильно


Приведи декларацию TPItem2, без нее рассуждения о "правильности" и тем более оптимальности бессмысленны ..


 
Ak47   (2009-08-27 15:04) [3]


> Приведи декларацию TPItem2, без нее рассуждения о "правильности"
> и тем более оптимальности бессмысленны ..



 { TPItem }

 PPItem = ^TPItem;
 TPItem = packed record
            ID: Integer;
          Name: string;
       Version: string;
   Description: string;
        Memory: Integer; // Занято памяти
      Priority: string;
       Threads: Integer; // Число потоков
         Path: string;
 end;

 { TPItem2 }

 TPItem2 = class
 private
   FItem: TPItem;
 public
   constructor Create(AID: Integer; AName, AVersion, ADescription: string;
     AMemory: Integer; APriority: string; AThreads: Integer; APath: string);
   { properties }
   property Item: TPItem read FItem write FItem;
 end;


 
Сергей М. ©   (2009-08-27 15:11) [4]

Понятно.
Во 2-м варианте лишние телодвижения с P: Point, на производительность алгоритма это скажется, разумеется, не лучшим образом


 
clickmaker ©   (2009-08-27 15:11) [5]

первый на доли миллисекунд оптимальней, ибо не тратится время на Point(i1.Item.ID, i2.Item.ID);



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

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

Наверх




Память: 0.47 MB
Время: 0.023 c
15-1250820480
Alkid
2009-08-21 06:08
2009.10.25
Ура!


15-1250689966
antonn
2009-08-19 17:52
2009.10.25
Подсобите с прогоном теста


15-1251469925
Suspended
2009-08-28 18:32
2009.10.25
Про мошенничество


15-1250969752
Gordom
2009-08-22 23:35
2009.10.25
Обновление Adobe Flash


2-1250843104
alshtam
2009-08-21 12:25
2009.10.25
подключение dll