Вызывают ли дженерики в Delphi узкие места в производительности?
недавно я разрабатывал приложение и хотел иметь коллекции нескольких типов. Я не хочу объявлять и реализовывать новый класс коллекции для его типа. Поэтому я подумал о дженериках, но не был уверен в производительности дженериков по сравнению с обычными типизированными экземплярами. Производительность-это главное, на что я смотрю. Мое приложение критично по времени, и даже потеря нескольких 100 миллисекунд также не рекомендуется.
Я использую Delphi 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;
1 ответов
нет узкого места производительности
Delphi дженерики являются составлен. Компилятор знает конкретные типы в compile время, и это будет лучше всего, чтобы предоставить вам лучший код, который он может. При проверке сгенерированного кода во время выполнения различий между общим и неродовым кодом не должно быть.
есть хороший шанс получить лучший код с дженериками, потому что вы, скорее всего, будете использовать готовый, эффективный, безопасный тип данные структуры. При прокатке вы, скорее всего, сократите углы, потому что давайте будем честными, написание алгоритмов сортировки, эффективное распределение и т. д. жесткий.