9

最近我一直在开发一个应用程序,并希望拥有几种类型的集合。我不想为它的类型声明和实现一个新的集合类。所以,我想使用泛型,但不确定泛型与普通类型实例相比的性能。性能是我关注的主要问题。我的应用程序是时间紧迫的,甚至失去 100 毫秒也是不可取的。

我正在使用德尔福 XE3

例如:

ICollectionItem = interface
  function GetID : string;
  property ID : string read GetId;
end;

TGenericCollection<T: ICollectionItem> = class
  function Add(T) : Integer;
end;

相比

TSomeClass = class(TInterfacedObject, ICollectionItem)
  function GetId : string;
end;

TSomeClassList = class
  function Add(item : TSomeClass) : Integer;
end;
4

1 回答 1

7

无性能瓶颈

Delphi 泛型已编译编译器在编译时就知道具体的类型,它会尽力为您提供最好的代码。在运行时检查生成的代码时,通用代码和非通用代码之间应该没有区别。

使用泛型获得更好的代码的机会很大,因为您更有可能使用现成的、高效的、类型安全的数据结构。当你自己滚动时,你可能会偷工减料,因为老实说,编写排序算法、高效分配等很难

于 2013-02-12T07:42:36.687 回答