Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Kleine Integer? (https://www.delphipraxis.net/74157-kleine-integer.html)

3_of_8 29. Jul 2006 12:46

Re: Kleine Integer?
 
Ich meinte vorher mit weniger Speicher folgendes: Auf der Festplatte verbraucht es weniger Speicher, wenn er es in ne Datei schreibt.

himitsu 29. Jul 2006 12:48

Re: Kleine Integer?
 
wie alle CPUs ganz genau arbeiten weiß ich doch auch nicht, aber IMHO muß ja nicht immer die gesamte Dateinbreite ausgenutzt werden ... wer sagt denn, daß die CPU icht mal nur 8, der 32 Datenleitungen verwenden muß?

Und wichtig ist doch wohl eigentlich nur, daß die CPU eben doch mit 8-Bit-Werten umgehen kann.


Zitat:

Zitat von 3_of_8
Ich meinte vorher mit weniger Speicher folgendes: Auf der Festplatte verbraucht es weniger Speicher, wenn er es in ne Datei schreibt.

Jo, das sollte wohl klar sein, denn sonnst könnte ich meine gepackten Records an die Wand schmeißen -.-''

marabu 29. Jul 2006 12:50

Re: Kleine Integer?
 
Hallo Leute,

selbstverständlich addressiert eine Intel CPU mit einem 32-bit Datenbus auch Bytes. Darüber hinaus kann jedes general purpose register als 8-bit, 16-bit oder 32-bit Register adressiert werden. Das Grundstudium Informatik umfasst (zumindest zu meiner Zeit) auch Kurse der technischen Informatik, in denen man den Aufbau eines solchen Registers lernt. Das einzige was nicht geht ist das Laden der oberen 16 bit ohne Zerstörung der unteren 16 - wenn ich mich richtig erinnere.

Grüße vom marabu

xaromz 29. Jul 2006 12:58

Re: Kleine Integer?
 
Hallo,
Zitat:

Zitat von marabu
Das einzige was nicht geht ist das Laden der oberen 16 bit ohne Zerstörung der unteren 16 - wenn ich mich richtig erinnere.

Zumindest nicht mit einem Move, da braucht man min. drei Befehle (rotate, move, rotate).

Gruß
xaromz

3_of_8 29. Jul 2006 13:08

Re: Kleine Integer?
 
Zitat:

Zitat von 3_of_8
Ich meinte vorher mit weniger Speicher folgendes: Auf der Festplatte verbraucht es weniger Speicher, wenn er es in ne Datei schreibt.

Jo, das sollte wohl klar sein, denn sonnst könnte ich meine gepackten Records an die Wand schmeißen -.-''[/quote]

Natürlich sollte das wohl klar sein. Meine Aussage vorher brachte ich nur, um die Aussage, <32 Bit Datentypen hätten keine Vorteile, zu widerlegen.

Sidorion 29. Jul 2006 20:54

Re: Kleine Integer?
 
Jetzt geb ich doch auch mal meinen Senf dazu:
Jede Speicherzelle (zumindest bei x86 Systemen) ist exakt 8 bit groß.
Bei einem Speicherzugriff kann (je nach Datenbusbreite, das mach dann der Controller) man entweder 8, 16 oder 32 Bit lesen, da die Zellen heutzutage in 4er Gruppen angelegt sind. Wenn ich also 4 byte aus dem Speicher holen will, brauche ich entweder einen Zyklus (lesen eines Integers), zwei Zyklen (Lesen von zwei words) oder vier Zyklen (Lesen von 4 Bytes).
Sicher spart man durch Verwendung vo kurzen Datentypen Speicher, aber die Geschwindigkeit leidet, wenn man nicht den Datentyp nimmt, der der Busbreite entspricht. Da heutzutage der Speicher relativ uninteressant ist, kann man durchaus ohne Bedenken mit Integer arbeiten.
In der CPU ist es übrigens völlig Wurscht, welchen Typ ihr nehmt. Die CPU bietet Befehle für die Manipulation aller drei Varianten (ber 64Bittern dann vier), die sich in der Geschwindigkeit nicht nterscheiden.

Nicolai1234 29. Jul 2006 22:49

Re: Kleine Integer?
 
Zitat:

Zitat von 3_of_8
Zitat:

Zitat von 3_of_8
Ich meinte vorher mit weniger Speicher folgendes: Auf der Festplatte verbraucht es weniger Speicher, wenn er es in ne Datei schreibt.

Jo, das sollte wohl klar sein, denn sonnst könnte ich meine gepackten Records an die Wand schmeißen -.-''

Natürlich sollte das wohl klar sein. Meine Aussage vorher brachte ich nur, um die Aussage, <32 Bit Datentypen hätten keine Vorteile, zu widerlegen.[/quote]
Kommt doch daraud an, wie man speichert, oder? :oops:

Ob ich ein Integer, ein Int64 oder gar ein String mit dem Inhalt 1 / "1" in beisielsweise einer ini speichere, nimmt das doch immer denselben Platz auf der Festplatte weg, oder? :oops: Sorry, aber wahrscheinlich kenn ich mich nicht aus und bin zu naiv :roll:

3_of_8 29. Jul 2006 22:58

Re: Kleine Integer?
 
Wer redet denn von ner INI? In ner INI wird das keinen Unterschied machen, aber da wird das ja auch nicht als Ordinaltyp, sondern als String gespeichert. Wenn man das in nen Record schmeißt oder per FileStream speichert, wird weniger Platz verbraucht.

Phoenix 29. Jul 2006 23:05

Re: Kleine Integer?
 
Zitat:

Zitat von Nicolai1605
Ob ich ein Integer, ein Int64 oder gar ein String mit dem Inhalt 1 / "1" in beisielsweise einer ini speichere, nimmt das doch immer denselben Platz auf der Festplatte weg, oder?

Bei einer 1 ja. Klaro. Nämlich jeweils genau 1 Byte.
Aber ne 1 könnte ich Dir auf der Platte auch ideal mit genau einem Bit ablegen - aber dann halt nicht in einer Ini-Datei.

Aber um es mal so zu sagen: Ob das nun in einem ShortInt oder in einem Int abgelegt wird ist für die Verarbeitungsgeschwindigkeit unerheblich, das der Int genauso in einem Zyklus behandelt werden kann (bei 64bit CPU's wäre das sogar ein Int64). Auf der Platte oder im Speicher kann man den Unterschied auch erst dann merken, wenn die Anzahl der so zu speichernden Werte eine nicht unerhebliche Größe erreicht. Wenn der Wert nur 10-20 mal gespeichert werden muss isses also im Prinzip egal, die paar Byte kann jeder verkraften. Bei mehreren tausend Datensätzen ist das dann schon spürbarer.

Michael Habbe 29. Jul 2006 23:14

Re: Kleine Integer?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Wie der Speicherverbrauch der Datentypen innerhalb der CPU aussieht kann ich nicht sagen, da müsste sich mal jemand zu äußern, der sich da auskennt.

Auf alle Fälle ist der Speicherverbrauch auf dem Datenträger nur so groß, wie der Datentyp auch benötigt.

Wieder mal ein fertiges Beispiel aus der Vorlesung :wink:
Die oberen Memos sind für die Anzeige der Datei, wenn diese auf verschiedene Art gelesen wird. Zuvor muss sie aber erstellt werden.

Der Zweck dieses Programmes sollte sein, zu zeigen, das es egal ist, wie ich eine Datei erstelle. Wichtig ist nur, das ich sie auch im selben Format auslese und mich nicht im Datentyp vertue. Dieses (einfache) Beispiel ist natürlich auch auf selbstdefinierte Datentypen übertragbar, als da seinen z.B. File of "Record"


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 Uhr.
Seite 3 von 4     123 4      

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