![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Оптимищация
Ak47 © (2009-08-27 14:51:00)как будет более правильно и оптимально:
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;
Сергей М. (2009-08-27 15:11:00) [1]Понятно.
Во 2-м варианте лишние телодвижения с P: Point, на производительность алгоритма это скажется, разумеется, не лучшим образом
clickmaker (2009-08-27 15:11:00) [2]первый на доли миллисекунд оптимальней, ибо не тратится время на Point(i1.Item.ID, i2.Item.ID);
Ak47 (2009-08-27 15:04:00) [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:02:00) [4]
> как будет более правильно
Приведи декларацию TPItem2, без нее рассуждения о "правильности" и тем более оптимальности бессмысленны ..
Ega23 (2009-08-27 14:58:00) [5]Оптимально - пофигу.
Правильно - в case else добавить.