* Обобщение:
Пожалуйста, проверьте компетентные комментарии экспертов Delphi. Специально для меня я бы попытался использовать старый TList / TObjectList, как предложил Дэвид, и использовать жесткое приведение и свойство TObjectList.List, как предложил А.Бушез. Буду пробовать TDynArray при рефакторинге в будущем.
=====================================================================
Скажем, у меня есть класс TAtom
, как определено в следующем коде. Во время выполнения существует от hundreds
до thousands
экземпляров TAtom, на данный момент stored in a dynamic array
. Во время выполнения мне нужно выполнять простые вычисления с плавающей запятой для TAtom.X/Y/Z
всех существующих экземпляров TAtom более 30
раз в секунду.
Теперь мне нужно добавить возможность adding
, inserting
, deleting
экземпляров TAtom во время выполнения. Похоже, что я выбрал (1) запросить большой массив; (2) придерживаться динамического массива и вручную SetLength; (3) перейти на обычный TList; (4) перейти на обычный TObjectList.
Я хочу избежать (1), если в этом нет необходимости, потому что тогда мне придется изменить довольно много сигнатур функций. (2) тоже выглядит не очень хорошо, потому что TList / TObjectList, похоже, создан для этой задачи. Однако, поскольку требуется приведение типов с использованием обычного TList / TObjectList, может ли кто-нибудь прокомментировать возможное снижение производительности? Я имею в виду, что было бы лучше, если бы можно было оценить нагрузку на производительность, прежде чем я переписываю код. Если производительность заметно упадет, могу ли я использовать другие методы?
Кроме того, мне интересно, есть ли разница в производительности между использованием TList и TObjectList?
TAtom = class
public
ElementZ: Integer;
X, Y, Z: Extended;
other variables: other types;
end;
TAAtom = array of TAtom;
return on investment
в моей ситуации? - person SOUser   schedule 18.03.2011random access
. Но я делаюsequential access
много. Например, для каждого пакета простых математических вычислений с плавающей запятой мне нужно перебрать экземпляры. Я предполагаю, что структура данныхlinked list
не так хороша, какarray
вsequential access
? - person SOUser   schedule 18.03.2011