Mam pare pytan dotyczacych wydajnosci. Albowiem pisze program i musze zdecydowac sie na pewne rozwiazania - a nie wiem na ktore.
Mam klasy:
TBrain -> TSlice -> TSlicePoints -> TLinks
Uwaga - to nie jest hierarchia klas (w sensie pochodzenia), wszystkie są class(TObject).
Ta hierarchia oznacza, ze obiekt klasy wyzszej w hierarchii zawiera TObjectList na ktorej sa obiekty klasy nizszej. A obiekt klasy nizszej zawiera pole Parent z odniesieniem do odpowiedniego obiektu klasy wyzszej.
Teraz pytania:
- Jesli z obiektu TLinks odwoluje sie do pola TBrain.costam, stosuje
self.Parent.Parent.Parent.costam
1a. czy self, ktore jest tu nadmiarowe, ale ulatwia pisanie ze wzgledu na CodeInsight (i jasnosc tekstu) obniza wydajnosc?
1b. czy taki wielokrotny Parent obniza wydajnosc? wydaje mi sie, ze powinien byc skompilowany na pojedyncze odniesienie, ale wolalbym byc pewien. W razie czego moge zrobic pola GrandParent i GrandGrandParent i wypelniac je w konstruktorach, ale mi sie nie chce
- do obiektow na TObjectList odwoluje sie np tak (np do listy TBrain.Slices:TObjectList):
(Brain.Slices[i] as TSlice).JakiesPoleTSlice
, czyli za kazdym razem rzutuje, bo nie chcialo mi sie pisac trzech klas pochodnych od TObjectList, w ktorych identyczne rzutowanie robilbym w metodach tych klas pochodnych. Wydaje mi sie, ze nie trace w ten sposob na wydajnosci - czy to prawda?