9

最近、私はアプリケーションを開発していて、いくつかのタイプのコレクションが欲しいと思っていました。その型の新しいコレクションクラスを宣言して実装したくありません。それで、ジェネリックを使うことを考えましたが、通常の型付きインスタンスと比較したジェネリックのパフォーマンスについてはよくわかりませんでした。パフォーマンスは私が見ている主要なものです。私のアプリケーションはタイムクリティカルであり、数百ミリ秒を失うことさえお勧めできません。

DelphiXE3を使用しています

例:

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 に答える