Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

Почему возникают тормоза при переходе от массива к такой схеме ?   Найти похожие ветки 

 
AIms   (2005-08-24 01:36) [0]

Было:
AIms : array of TAIms;

Cтало :

FAIms : array of TAIms;

property AIms[Index: Integer]: TAIms read GetObject write SetObject;

Всё нормально работает, но тормозит жутко, не понимаю почему. Это чего, просто такая тормозная конструкция, или что-то ещё ? И главное, можно ли это как нибудь ускорить ?


 
Defunct ©   (2005-08-24 01:47) [1]

причина возможно здесь:

GetObject/SetObject

код приведите.


 
AIms   (2005-08-24 02:02) [2]

Там ничего нету. Только загрузка при первом обращении :

Вроде так :

function  TAi2.GetObject(Index: Integer): TAIms;
begin
 if not isLoad then begin
   isLoad := True;
   LoadIt;
 end;
 Result := FAIms[Index];
end;

procedure TAi2.SetObject(Index: Integer; Value: TAIms);
begin
 FAIms[Index] := Value;
end;


 
Defunct ©   (2005-08-24 03:59) [3]

Это что?

if not isLoad then begin
  isLoad := True;
  LoadIt;
end;


без этого тоже тормозит?


 
Джо ©   (2005-08-24 04:02) [4]


>  [3] Defunct ©   (24.08.05 03:59)

Lazy load.
То бишь, загрузка актуальных данных только после первого обращения к свойству. Я так понимаю.


 
AIms   (2005-08-24 04:12) [5]

Отбой тревоги. :) Перезагрузился и всё нормально заработало. Видимо просто глюк какой то был. Очень надеюсь, что повторяться он не будет.


 
Defunct ©   (2005-08-24 05:10) [6]

> Джо

IsLoad это больше на название функции похоже, или свойства.
как для флага Loaded должно было быть.


 
Джо ©   (2005-08-24 05:22) [7]


>  [6] Defunct ©   (24.08.05 05:10)

Да, название неудачное. И вообще, установку флага я производил бы в методе LoadIt.


 
TUser ©   (2005-08-24 06:18) [8]

А SetLength где?


 
Anatoly Podgoretsky ©   (2005-08-24 09:42) [9]

Код очень опасный отсутствует контроль индексов.


 
GuAV ©   (2005-08-24 14:19) [10]

Anatoly Podgoretsky ©   (24.08.05 9:42) [9]

Откуда Вы можете знать, что отсутствует контроль индексов ?


 
Alexander Panov ©   (2005-08-24 14:22) [11]

if not isLoad then begin
  isLoad := True;
  LoadIt;
end;
Result := FAIms[Index];


Длина FAIms может быть нулевой


 
КаПиБаРа ©   (2005-08-24 14:30) [12]

Контроль индексов не всегда нужен. Лазиют же некоторые по скалам без страховки.


 
GuAV ©   (2005-08-24 14:44) [13]

Alexander Panov ©   (24.08.05 14:22) [11]
Длина FAIms может быть нулевой


И тогда не будет ERangeError при {$R+} ?


 
evvcom ©   (2005-08-24 17:10) [14]


> И тогда не будет ERangeError при {$R+} ?

Будет, но...
Поскольку используется проперть, значит предполагается ее дать кому-то использовать, а этот кто-то может R+ изменить на R- c вытекающими.


 
Sapersky   (2005-08-24 17:57) [15]

Type
 TImsArray = array of TAIms;

FAIms : TImsArray;
property AIms: TImsArray read FAIms;

Смертельный номер :)
Зато по скорости наилучший вариант. Жалко, default с ним не действует.


 
jack128 ©   (2005-08-24 18:42) [16]

evvcom ©   (24.08.05 17:10) [14]
Поскольку используется проперть, значит предполагается ее дать кому-то использовать, а этот кто-то может R+ изменить на R- c вытекающими.

$R - локальная директива, область действия которой ограничена текущим модулем..


 
AIms   (2005-08-25 03:30) [17]

А почему теперь : AIms[0].name := "blablabla"; не действует ?


 
Fay ©   (2005-08-25 05:10) [18]

2 КаПиБаРа ©   (24.08.05 14:30) [12]
>> Контроль индексов не всегда нужен. Лазиют же некоторые по скалам без страховки.
Си-шники называются


 
Aims   (2005-08-25 05:27) [19]

Есть там контроль индексов. Что мне сюда весь проэкт запостивать что ли ?


 
AIms   (2005-08-31 06:43) [20]

AIms   (25.08.05 03:30) [17]
А почему теперь : AIms[0].name := "blablabla"; не действует ?


 
КаПиБаРа ©   (2005-08-31 07:45) [21]

Что значит не действует?


 
tesseract ©   (2005-08-31 21:49) [22]

А чем всё же Tlist не нравится? Для этого и предназначен.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.012 c
1-1126763538
Ярослав
2005-09-15 09:52
2005.10.09
Определить сужествование MDI Child формы


14-1126243673
Vlad Oshin
2005-09-09 09:27
2005.10.09
Калибровка HP LJ 1220. Как это делается?


14-1127310647
Суслик
2005-09-21 17:50
2005.10.09
Кто в Москве продаст следующие книги?


1-1126978396
Piter
2005-09-17 21:33
2005.10.09
TList не потоко-безопасный класс?


14-1127127222
pazitron_brain
2005-09-19 14:53
2005.10.09
Кто-нибудь слышал/использовал xoops?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский