Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
025
01.06.2005, 00:43
epidemic



ok, ein verständlicher code (mit bool) wär mir wahrscheinlich eeh wichtiger als das bisschen Geschwindigkeit.

Kann man eigendlich irgendwie festlegen in welcher Reihenfolge die Variablen in den Speicher geladen werden?
Bisher hab ich da noch kein System drin gefunden wie er das einordnet (es ist zwar bei jedem compilen die selbe ANordung, aber er sortiert nicht nach Datentyp, oder alphabetisch, oder nach Reihenfolge wie es deklariert wird - wenn's nicht immer die selbe ANordnung wär, würd ich sagen der macht das zufällig)

[edit]
achja, ich weiss dass das nichts mehr mit richtigem Programmieren zu tun hat, auf jeden Fall nicht für einen Anfänger. Ich wollt' nur mal so ein bisschen damit rumspielen :)
Ausserdem interessiert es mich immer die Technik hinter soetwas zu kennen

--

Der Optimist glaubt, dass wir in der Besten aller Welten leben.
Der Pessimist fürchtet, dass dies stimmt.


Dieser Beitrag wurde am 01.06.2005 um 00:44 von epidemic bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
026
01.06.2005, 09:06
oxff



gcc & cc (MSVC++6) sortieren lokale Variablen auf dem Stack nach der Reihenfolge der Deklaration.

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik

zum Seitenanfang zum Seitenende Profil || Suche
027
01.06.2005, 15:01
theDon



Optimierungen koennen die Verteilung auch beieinflussen (Zum Beispiel durch `common subexpression elimination').

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
028
01.06.2005, 20:21
Kriz



Oder durch Automatic Register Allocation. Eigentlich würfelt fast jede speicherbezogene Optimierung die Stackreihenfolge so oder so durcheinander. Das beste ist per Debugger die ASM-Sequenzen und ggf. den Stack zu beobachten, dann weiß man ungefähr wie der Code die Variablen auf dem Stack pusht (bzw. ein Memspy, der sollte den Job auch erledigen können).

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
029
01.06.2005, 23:58
epidemic



Naja, ich hab gerade in Prefects Tutorial über Partikel bei SDL gelesen, dass zur Laufzeit die Daten ohnehin manchmal verschoben werden (zumindest wenn ich den Satz richtig verstanden habe, das ist jedenfalls der Grund weshalb man die Surfaces "locken" muss), also ist das eeh sehr unsicher (und sowieso sinnlos) auf Variablen per überweitem Arrayparameter zuzugreifen.

Btw, noch eine klitze-kleine allgemeine Frage (ich glaub ich sollte besser für die ganzen kleinen Fragen nen eigenen Thread aufsuchen, das wird ja sonst bald Chaos wenn jede Frage immer so eine Diskussion aufwirft ^^):
Kann ich immer bedenkenlos "void" als Rückgabewert meiner Funktionen (ausser main) verwenden? Ich hab mal gelesen, dass "void" nicht als "richtiges" C++ gilt. Soll ich dann doch immer zumindest bool nehmen? Das hätte den Vorteil, dass man immer die Möglichkeit hat, die Funktionen auf Erfolg zu prüfen (true==erfolg, false==muss was falsch gelaufen sein).
Erfordert es viel Rechenaufwand, wenn eine Funktion einen Wert zurückgibt, der gar nicht benutzt wird? Oder ist das selbst bei großen Schleifen (also häufigem Auftreten) vernachlässigbar?

Ich hab schonmal gesucht ob es vielleicht irgendwo eine Tabelle gibt in der aufgelistet ist, was viel Rechenleistung verbraucht und was der Rechner ganz locker packt (z.B. Division > Multiplikation > Addition/Subtraktion oder call-by-value > call-by-reference > call-by-pointer oder soetwas).
[edit]
achja, aber ich hab sowas nicht gefunden :)

--

Der Optimist glaubt, dass wir in der Besten aller Welten leben.
Der Pessimist fürchtet, dass dies stimmt.


Dieser Beitrag wurde am 02.06.2005 um 00:00 von epidemic bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
030
02.06.2005, 00:33
Kriz



Du kannst void immer als Rückgabewert nehmen, wenn die Funktion oder Methode nichts zurückliefern soll. Wer erzählt denn so eine Scheiße mit "kein richtiges C++"?

Für Fehleranalyse gibbet außer der Ausnahmebehandlung nur noch zwei sinnvolle C++ Möglichkeiten:

1. Der Rückgabewert selber ^^
Quellcode:bool MachDiesUndDas(); 2. Einen Zeiger- oder Referenzwert, welcher mit Statusinformationen gesetzt wird
Quellcode:KlasseX BlaBla(bool &erfolgreich); Von der globalen errno Variablen würde ich generell in C++ abraten.

---

Wenn ein Rückgabewert nicht weiterverarbeitet wird, geht er ins Nirvana über. Das kann man getrost in Kauf nehmen.

---

Benutze Dev-C++ unter Windows, da gibt's einen feinen Profiler zumindest für die Function callings. Da kann man schon erkennen, was wieviel Zeit, Zyklen usw. verbraucht :)

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)


Dieser Beitrag wurde am 02.06.2005 um 00:38 von Kriz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
031
02.06.2005, 10:33
oxff



Ausnahmen rumwerfen, Rumversuchen und Rumfangen sollte aber keinesfalls unterschlagen werden:
C++ Tutorial Lesson 34: Exceptions

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik

zum Seitenanfang zum Seitenende Profil || Suche
032
02.06.2005, 16:57
theDon



Zitat:
epidemic postete
Kann ich immer bedenkenlos "void" als Rückgabewert meiner Funktionen (ausser main) verwenden? Ich hab mal gelesen, dass "void" nicht als "richtiges" C++ gilt.
Das bezog sich dann aber ausdruecklich auf `void main()', was in der Tat falsch ist.

Mal abgesehen von der Verwendung als Zeigertyp ist void auch nur als Rueckgabetyp zu gebrauchen.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche