Zugriffszeiten auf Strukturen
-
Virokams schrieb:
Nur nochmal eine Verständnissfrage:
Strukturen sind Komplexe Datentypen oder? welche gibt es denn noch?
Zum Beispiel Klassen? Aber was hat das mit dem Thread zu tun?
-
^^klassen und strukturen sind sich so ähnlich, dass man auf eins davon verzichten kann, wenn man das andere hat.
-
~fricky schrieb:
^^klassen und strukturen sind sich so ähnlich, dass man auf eins davon verzichten kann, wenn man das andere hat.
Aber in C gibt's doch keine Klassen ...
Also, ich hab' jetzt auf 'nem Prozessor ohne Cache und Schnickschnack mal 3000 Elemente in einer Struct und einmal die einzelnen Struct- Mitglieder abgelegt, der Unterschied war eher marginal und tendenziell zugunsten der nicht- struct- Lösung. Stärkeren Einfluß hatte, ob die struct z.B. chars unter Verwendung von #pragma pack beinhaltete.
Scheint wohl wirklich so, als ob Der Frosch das Caching seinen Systems ungünstig bedienen würde.
Nebenzu: Für'n 4 Gewinnt sind 70 MB Hashtable ganz schön dicke Kanonen, ich habe eins für den C64 irgendwo im Fundus, wenn ich das im Simulator auf FullSpeed laufen lasse, kann ich das Ding schon nimmer schlagen - und soweit ich mich erinnere, waren da ohne Getrickse nur so etwa 48 kB erreichbar.
-
pointercrash() schrieb:
Nebenzu: Für'n 4 Gewinnt sind 70 MB Hashtable ganz schön dicke Kanonen, ich habe eins für den C64 irgendwo im Fundus, wenn ich das im Simulator auf FullSpeed laufen lasse, kann ich das Ding schon nimmer schlagen - und soweit ich mich erinnere, waren da ohne Getrickse nur so etwa 48 kB erreichbar.
Ja, 70MB sind schon verdammt viel, wie gesagt, wenn ich die Hash-Table halbiere dann verlangsamt sich das Programm um 10%. Wenn ich noch Speed rausholen kann, dann wird die Hashtable noch mindestens halbiert. Aber schau dir mal das beliebteste Vier-Gewinnt Spiel Mustrum an: Wenn mann dort die Eröffnungsbücher abstellt, dann braucht das Programm selbst mit einer 512MB Hashtable eine halbe Ewigkeit für einen Zug (und das selbst noch nach 8ten oder 10ten Halbzug). Das schnellste Vier-Gewinnt Programm das ich kenne, ist von einem Schweizer Physiker und der benutzt eine 40MB Hashtable.
-
DerFrosch schrieb:
Ja, 70MB sind schon verdammt viel, wie gesagt, wenn ich die Hash-Table halbiere dann verlangsamt sich das Programm um 10%. ... Das schnellste Vier-Gewinnt Programm das ich kenne, ist von einem Schweizer Physiker und der benutzt eine 40MB Hashtable.
Ich dachte, der Original- 4-Gewinnt- Spielbaum wäre eh schon vollständig durchgerechnet und man plagt sich nur noch mit der n * m- Felder- Sache?
Jedenfalls war das C64- Spiel damals auf der höchsten Stufe quasi einen Tag pro Zug abgemeldet, auf dem Simulator spielt das Ding den Zug in unter einer Minute aus und ist für mich unknackbar, obwohl es sich nicht den Luxus leisten kann, Stellungswiederholungen über gigantische Hashtables zu vermeiden.
Für mich sind diese Spiele ohnehin zunehmend frustrierend geworden, seit Ende der 90er putzen mich Fritz&Co auf Turnierstufe regelmäßig vom Brett.Zurück zum Thema: Bei Dir läuft die Struct- Version schneller (bei mir zwar nicht), dann nimm' sie. Möglicherweise kannst Du noch den Compiler zu einem günstigen Alignment (mal nach "pack" und related suchen) überreden, aber das ist dann nicht mehr wirklich C- sondern Compilerspezifisch.
-
pointercrash() schrieb:
Zurück zum Thema: Bei Dir läuft die Struct- Version schneller (bei mir zwar nicht), dann nimm' sie. Möglicherweise kannst Du noch den Compiler zu einem günstigen Alignment (mal nach "pack" und related suchen) überreden, aber das ist dann nicht mehr wirklich C- sondern Compilerspezifisch.
Warum sollte er die struct-Variante künstlich verlangsamen?
-
Tim schrieb:
Warum sollte er die struct-Variante künstlich verlangsamen?
pack kennt mehrere parameter, je nach Compiler. Manche bieten Dir ein besonders geschwindigkeitsoptimiertes Alignment an. Das hast Du wohl noch nicht gewußt, was?
-
Stimmt, ich geh bei "pack" immer davon aus, dass man das benutzt um eben das alignment gänzlich zu unterbinden. Hast auch mal Recht gehabt in einem off-topic-Thema
-
Tim schrieb:
Hast auch mal Recht gehabt in einem off-topic-Thema
Was soll daran OT sein?
Thema war "Zugriffszeiten auf Strukturen" und ich habe das Zeug ausgebencht und den Tip geliefert, mal "pack" genauer anzusehen und halte den weiter für sachdienlich. OT? Häh?
-
Na, ich guck mal, ob ich da was finde, danke für den Tipp...