Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TPoint nicht verwenden (wg. packed)? (https://www.delphipraxis.net/81941-tpoint-nicht-verwenden-wg-packed.html)

Cöster 5. Dez 2006 18:07


TPoint nicht verwenden (wg. packed)?
 
Hi!

Sollte man, wenn es um Geschwindigkeit geht, nicht den Typ TPoint benutzen? Denn er ist ja als packed record deklariert und darauf ist der Zugriff ja langsamer. Sollte man sich deswegen einen eigenen Typ (TMyPoint oder so) bauen, dessen einziger Unterschied zum TPoint ist, dass er nicht packed ist?

SirThornberry 5. Dez 2006 18:10

Re: TPoint nicht verwenden (wg. packed)?
 
packed ist nicht zwangsläufig schneller. Wenn die Typen im Record die richtige Größe haben macht das keinen Unterschied.

3_of_8 5. Dez 2006 18:12

Re: TPoint nicht verwenden (wg. packed)?
 
packed ist wenn dann langsamer, SirThornberry, aber es macht halt wirklich so gut wie keinen Unterschied.

Cöster 5. Dez 2006 18:13

Re: TPoint nicht verwenden (wg. packed)?
 
Zitat:

Zitat von SirThornberry
packed ist nicht zwangsläufig schneller. Wenn die Typen im Record die richtige Größe haben macht das keinen Unterschied.

Langsamer meinst du, oder? D.h. TPoint wird durch packed nicht ausgebremst, weil X und Y beide vom Typ Integer sind?

[Edit nach nicht gekommenen r. Kasten]
@3_of_8: so gut wie keinen oder keinen?[/Edit nach nicht gekommenen r. Kasten]

SirThornberry 5. Dez 2006 18:16

Re: TPoint nicht verwenden (wg. packed)?
 
ich meinte langsamer :oops:
Genau, da beide vom Typ Integer sind würde das ganze ohne packed im Speicher ganz genau so aussehen weil es auch an den 32bit ausgerichtet wird.

3_of_8 5. Dez 2006 18:17

Re: TPoint nicht verwenden (wg. packed)?
 
Wenn es Word wären doch egtl. auch, man kann doch AFAIK mit der gleichen Anzahl Assembler-Befehle auf Words zugreifen wie auf Integer.

Muetze1 5. Dez 2006 18:23

Re: TPoint nicht verwenden (wg. packed)?
 
Zitat:

Zitat von 3_of_8
Wenn es Word wären doch egtl. auch, man kann doch AFAIK mit der gleichen Anzahl Assembler-Befehle auf Words zugreifen wie auf Integer.

Das ist ja nicht alles. Ein Word sind nur 16 Bit. Der Adressbus ist im Normalfall 32 Bit gross und das ist die kleinste Granularität, welche in die CPU reinkommt. D.h. wenn du ein Word haben willst, wird trotzdem aus dem Speicher ein 32 Bit Wert angefordert und dann wird das gesucht Word herausgesucht. Wenn du nun einen Packed Record hast und das Word im oberen Teil liegt, dann wird ein 32 Bit Wert gelesen und dann müssen die oberen 16 Bit noch nach unten gebracht werden bevor sie dann benutzt bzw. in der CPU abgelegt werden können.

Cöster 5. Dez 2006 18:23

Re: TPoint nicht verwenden (wg. packed)?
 
Zitat:

Zitat von 3_of_8
Wenn es Word wären doch egtl. auch, man kann doch AFAIK mit der gleichen Anzahl Assembler-Befehle auf Words zugreifen wie auf Integer.

Das hat SirThornberrys Antwort doch inbegriffen. Solange beide vom gleichen Typen sind. Wenn jetzt jedoch z.B. X ein Integer wäre und Y Word, wahrscheinlich nicht.

3_of_8 5. Dez 2006 18:24

Re: TPoint nicht verwenden (wg. packed)?
 
Dürfte aber auch nicht signifikant langsamer sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz