Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
14. Jun 2012
Was mir aber noch einfällt.
Gut, die GPU mag schneller sein, als das SSE,
aber wenn nicht viel/lange gerechnet wird, lohnt es sich dann übberhaupt die GPU zu nutzen?
Schlißelich muß ja erstmal alles zu der rüber und danach dann wieder zurück.
Nicht alle GPUs unterstüzen sowas und ich glaub nicht, daß alle aktuellen GPUs eine einheitliche Schnittstelle anbieten. (is doch bestimmt schlimmer...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
14. Jun 2012
Der Anfang eines statischen Arrays ist erstmal alligned, so wie es FastMM vorgibt.
Und dann kommt es auf die Größe der Felder des Arrays an.
Und bei Records (innerhalb des Arrays) auf die Größe des größten enthaltenen Feldes.
Die Felder des Arrays werden mit einem maximalen "allign" ausgerichtet, wie es {$ALIGN} vorgibt.
Die tatsächliche Ausrichtung hängt aber von den Array-Feldern ab....
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
14. Jun 2012
Lokale Variablen sind nunmal nur 8 Bit Byte alligned. :roll:
Mist, hier quatscht irgendwer ständig von Bit, da hab'sch mich glatt anstecken lassen :oops:
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
14. Jun 2012
FastMM erstellt und unterteilt seine Speicherblöcke aligned (ich glaub aktuell alle 16 Byte)
dynamische Arrays und alles über GetMem ist somit ordentlich ausgerichtet.
Der Stack ist auch möglist auf 4 Byte ausgerichtet (falls da keiner Mist baut)
Wobei man ja seit einer ganzen Weile damit anfängt Code, welcher mal in der CPU berechnet wurde, in die schnellere/bessere GPU auszulagern....
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
13. Jun 2012
Ist nahezu egal und effektiv macht es keinen Unterschied, da ein Array eh nie so groß werden kann. (vorallem Dank der Speicherdefragmentierung ... überall liegen DLLs und anderes Zeugs im Weg)
Das letzte CMP soll nur absichern, daß kein Integerüberlauf auftritt, wenn man für Count was zu Großes übergibt, da dort ja mal 16 (shl 4) gerechnet wird.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
13. Jun 2012
EBX solltest du nicht einfach so überschreiben, ohne dessen Wert zu speichern und hinterher wiederherzustellen. :warn:
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
13. Jun 2012
Eigentlich liegt Result in EAX, aber nur, wenn es klein genug ist und wenn es sich nicht um Typen mit Compilermagic (automatischer Speicherverwaltung) handelt.
Alles andere wird als Var/Out-Parameter übergeben.
Also alles mit maximal 32 Bit (eventuell auch 64 Bit ... bin mir grade nicht sicher, aber bei den In-Parametern sind Int64 und Double ein bissl anders) und wenn es kein String, dyn....