Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Jumping Jack

Treue Seele

Beiträge: 142

Wohnort: Hamburg

Beruf: Schüler

  • Private Nachricht senden

11

25.08.2003, 13:56

ich glaube, das sowieso FüllBytes angelegt werden,
um den bool wert besser kopieren zu können.

12

25.08.2003, 17:16

Zitat von »"Sarge"«

Zitat von »"DarthB"«

Ich verwende auch immer den build-in Type bool oder ebend eine Flag Variable!
Mit ner Flagvariable spart man schön Speicher. Immerhin liefert sizeof(bool) bei meinen VC++ 1 zurück und in einen Byte kann man 8 Flags speichern.

Ciao DarthB

Tja, aber die ganzen Maskierungen bei Abfragen / Setzen der Werte kostet Performance, und das ist eher das Problem bei Games...



hmm, diese zeit ist wirklich minimal, falls es überhaupt länger dauert...es gibt einfach zu viele, die am falschen ende optimieren...
stay tight, project universe comes back!
### project earth <> 2004 ###

DarthB

Treue Seele

Beiträge: 265

Beruf: Schüler

  • Private Nachricht senden

13

25.08.2003, 17:55

@neonew:
Da hast du Recht, aber in manchen Gebieten stößt man halt auf begrenzten Speicher, da würdest du dein blaßes Wunder erleben wenn du 31 Bit verschwendest nur um einen boolschen Wert abzufragen. Das trifft aber auch für mich nicht zu! :angel:
Außerdem ist der Speicher weitaus begrenzter als die CPU Power heut zu tage! Ich benutze Flag Variablen weil ich sie schöner finde, es hat in meinen Augen mehr Style und ist eleganter, aber dass ist Geschmackssache! ;D
Viele Sachen werden ey vom Compiler wegoptimiert und es ist halt viel zu low levelig um bei Spielen über Optimierungen in diesem Bereich zu diskutieren.

P.S.
Hab dein Beitrag gerade nochmals gelesen und festgestellt das du wohl den Sarge meintest, aber wenn ich was schreibe poste ich es auch! ;)

@Sarge
Soll das heißen das:

Quellcode

1
2
3
4
bool b1 = true, b2 = true, b3 = false;
if(b1 == true)
  if(b2 == true)
    if(b3 == true)

schneller ist als:

Quellcode

1
2
3
4
BYTE Flags = 2 | 4;
if(Flags & 2)
  if(Flags & 4)
    if(Flags & 8)

Ich kenn mich da überhaupt nicht aus und frage aus reinem Interesse, ich werde Bitflags weiterbenutzen ob sie jetzt ein oder zwei Takte langsamer sind oder nicht! 8)

Ciao DarthB :huhu:

14

25.08.2003, 20:26

Die Bit Flags sind glaub ich nicht langsamer als ein Boolischer vergleich. Die Verknüpfung hinterläst im Flag Register genau so seine Spuren wie ein Vergleich. Und der Jump Befehl fragt das Flag-Register der CPU und führt dann einen Sprung aus, oder halt nett.

Ich kenne das zwar nur vom billigen Z80 Prozessor, aber das Prinzip ist überall gleich.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

15

30.08.2003, 13:29

nimm besser bool und nicht BOOL da BOOL kein BuildIn Type ist. Bischen standard sollte schon sein ;D

Anonymous

unregistriert

16

30.08.2003, 17:21

Ein wenig ASM ;)

32-Bit Zugriffe sind im allgemeinen langsamer als 8-Bit oder 16-Bit Zugriffe, da alle Operanden 32-Bit lang sind. Handelt es sich bei diesen Operanden um Konstanten, so verländern sie den Maschinenbefehl und damit seine Ladezeit. Ein 32-Bit Zugriff ist also nur sinnvoll, wenn wirklich 32-Bit benötigt werden.
Desweiteren wird jedem 32-Bit Zugriff innerhalb eines 16-Bit Programmes ein 1-Byte großes Präfix vorangestellt, welches den 32-Bit Zugriff von dem entsprechenden 16-Bit Zugriff unterscheidet.

Quellcode

1
2
3
4
5
6
7
8
    0000  B0 19                  MOV AL,25
    0002  04 21                  ADD AL,33

    0004  B8 0019                MOV AX,25
    0007  05 0021                ADD AX,33

    000A  66| B8 00000019        MOV EAX,25
    0010  66| 83 C0 21           ADD EAX,33


:jojo:

17

30.08.2003, 17:56

Hmmm....bist du dir da sicher? Ich mein das gesamte System ist auf 32Bit ausgelegt. D.h. das alle Datenleitungen 32Bit Breit sind und ermöglichen ein 32Bit Datenwort auf einen Schlag zu transportieren oder zu verarbeiten.

Dein Beispiel mit dem 16Bit Programm, ist schon klar. Wenn ich mit einem 16Bit Befehl ein 32Bit Datenwort bearbeiten will, brauch man dafür doppelt solange. Allerdings gibt es keine 16Bit CPUs mehr und keiner erzeugt mehr ein 16Bit Programm.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Anonymous

unregistriert

18

30.08.2003, 19:06

Ja richtig die Operanten sind aber immer 32 Bit lang und müssen deshalb eben auch als komplett geladen werden. Das Beispiel sollte sich auch nur rein auf den Vergleich zwischen 8, 16, 32 Bit beziehen, eben Eure Frage BOOL oder bool. Das es keine 16 Bit CPU mehr gibt (bzw. diese keine oder kaum noch Verwendung finden), ist mir Klar. Versuch doch mal 32 Bit Code mit einer 16 Bit Architektur (CPU) zu laden, das geht ja nicht. Nein logischer Weise ist der 8 Bit, bzw. 16 Bit Strom kleiner als der 32 Bit und kann deshalb schneller geladen werden. Nur das hatte ich damit ausdrücken wollen. SORRY meine Formulierung war wohl auch ein wenig daneben. Schau Dir einfach mal das Beispiel an wenn Du einen Shooter wie Unreal 2003 spielst, welche enormer Unterschied in der Performence vorliegt wenn man die Farbtiefe auf 16 Bit setzt statt der 32 Bit, das wäre ein ähnliches Prinzip, da die Graka mit viel weniger Farben arbeiten muß, also die Strecke kürzer wird, geht alles schneller als in 32 Bit und Heute hat man eigentlich auch kaum noch karten die weniger als 16 Bit zur Verfügung stellen. :wirbel:

19

30.08.2003, 20:33

Ja das mit den Farben ist ein gutes Argument. Aber Lustig ist das du genau das gegenteil Vertrittst, was einige andere sagen :)

Wir haben jetzt also genau 3 Meinungen.
1) 32Bit schneller als 8 & 16Bit
2) 8, 16 & 32Bit gleich schnell
3) 8, 16Bit schneller als 32Bit
Stimmen wir ab ;) Währe schön wenn wir einen hätten der jemanden kennt der CPU's herstellt.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

DarthB

Treue Seele

Beiträge: 265

Beruf: Schüler

  • Private Nachricht senden

20

30.08.2003, 21:34

Ich stimme für 2. ;D

Und wer fragt nach der Abstimmung bei Intel und Athlon an was nun wie ist?

Werbeanzeige