Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Integer-Datentypen - DH empfiehlt immer Integer oder Cardina (https://www.delphipraxis.net/113218-integer-datentypen-dh-empfiehlt-immer-integer-oder-cardina.html)

christian_r 5. Mai 2008 01:29

Re: Integer-Datentypen - DH empfiehlt immer Integer oder Car
 
Zitat:

Zitat von Muetze1
Die generischen Typen wachsen mit und somit sind alle Strukturdefinitionen, welche irgendwie das Programm verlassen, damit definiert worden, damit sie gleich gross bleiben, egal auf welchem Compiler.

Das bedeutet also, wenn man programmintern fundamentale Typen verwender, ist es egal, sogar angebracht. Aber wenn man "das Programm verlässt", z. B. bei API-orientierten Anwendungen, sollte man die generischen Typen verwenden, da diese sich dem zugrundeliegenden Betriebssystem und der CPU anpassen, demzufolge auch der API zugrunde liegen.

[edit]
Ich bleibe mal beim API-Beispiel.
Wenn ich auf einem 32 Bit Betriebssystem einen API-Aufruf mit einem Ordinalwert starte, dann ist der zugrundeliegende Datentyp auch 32Bit und bei einem 64 Bit Betriebssystem würde er automatisch ebenfalls 64 Bit Länge erhalten. Somit wäre es ungünstig, einen Longint zum Emfpang eines Rückgabewertes einer API-Funktion zu verwenden, welche einen ordinalen Wert zurückliefert. Denn in einem 64-Bit-System wäre der Rückgabewert für den Longint schon nicht mehr speicherbar, bzw. nur über Umwege zu verarbeiten. Und das wäre dann die veringerung der Performance, wie es in der DH schon beschrieben wurde.

Verwende ich generische Typen, kann ich die Anwendung auf verschiednen XXX-Bit-System laufen lassen ohne Probleme mit der Speicherung der Werte zu haben.
[/edit]

Richtig verstanden?

Medium 5. Mai 2008 03:00

Re: Integer-Datentypen - DH empfiehlt immer Integer oder Car
 
Leider ist die Welt nicht ganz so schön. Wie breit ein generischer Typ ist, wird vom Compiler festgelegt, und zwar zur Compiletime. Das heisst, du kannst das beschriebene Verhalten nicht von ein und der selben Executable erwarten, sondern musst schon noch die Quelle mit einem jeweiligen Compiler übersetzen. Der Gewinn der daraus entstünde wäre, dass du im Code nichts anzupassen bräuchtest. (Und man müsste voraussetzen können, dass die API auch in vollem Umfang mit "wächst".)

Die Kommunikation mit einer API ist aber eigentlich nicht der Grund weswegen man generische Typen empfiehlt. Da geht es in der Tat eher um das schon beschriebene Alignment, und um zu durchschauen warum das genau ein Vorteil ist, ist etwas Lektüre zu CPU-Architektur bzw. Datenbussen und Pipelines nicht übel. Einfach gesagt ist man damit "netter" zur CPU, und wird durch höhere Geschwindigkeit belohnt. In den meisten Anwendungen dürfte der Unterschied vermutlich nicht gravierend auffallen, aber manchmal kommt es halt auf jeden Cycle an, den man so einfach gewinnen kann.

christian_r 5. Mai 2008 03:17

Re: Integer-Datentypen - DH empfiehlt immer Integer oder Car
 
Zitat:

Zitat von Medium
Wie breit ein generischer Typ ist, wird vom Compiler festgelegt, und zwar zur Compiletime. Das heisst, du kannst das beschriebene Verhalten nicht von ein und der selben Executable erwarten, sondern musst schon noch die Quelle mit einem jeweiligen Compiler übersetzen. Der Gewinn der daraus entstünde wäre, dass du im Code nichts anzupassen bräuchtest.

OK, das habe ich klar verstanden.

Zitat:

Zitat von Medium
Die Kommunikation mit einer API ist aber eigentlich nicht der Grund weswegen man generische Typen empfiehlt.

War nur ein Anwendungsbeispiel, welches ich vermutet habe.

Zitat:

Zitat von Medium
Da geht es in der Tat eher um das schon beschriebene Alignment, und um zu durchschauen warum das genau ein Vorteil ist, ist etwas Lektüre zu CPU-Architektur bzw. Datenbussen und Pipelines nicht übel.

Ich habe zu Alignment mal Wikipedia befragt. Wikipedia :: Speicherausrichtung

Wenn mir bitte jemand ein kleineres Anwendungsszenario beschreiben möchte, ich bin dem Lernen nicht abgeneigt. Und das macht es bestimmt einfacher verstehbar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr.
Seite 3 von 3     123   

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