speicher schreiben und der cache
-
hoi
audacia schrieb:
Meep Meep schrieb:
hab deinen C code mal getestet. der laeuft am BCB auch ca. 30 % langsamer als das memcpy.
Vermutlich, weil du deinen Code im Debug-Modus kompiliert hast, und die memcpy-Funktion der Bibliothek natürlich im Release-Modus kompiliert wurde.
Moritzhab im release-modus kompiliert.
Meep Meep
-
Meep Meep schrieb:
hab im release-modus kompiliert.
Ich auch, und bei mir liefen beide Funktionen etwa gleich schnell (BCB 6, X 1.5). Vielleicht Meßungenauigkeit?
-
das cld dürftest du dir sparen können, es sei denn, bcb hat hier völlig andere konventionen. jedenfalls für vc++, gcc bei allen funktionseintritten und für alle API calls ist zwingend vorgeschrieben, dass das direction flag nicht gesetzt ist.
-
Meep Meep schrieb:
das mit SSE waere interessant zu probieren, jedoch geht das mit dem bcb nicht.
Ab welchen Prozessoren wird SSE eigentlich unterstützt?
-
re
audacia schrieb:
Meep Meep schrieb:
das mit SSE waere interessant zu probieren, jedoch geht das mit dem bcb nicht.
Ab welchen Prozessoren wird SSE eigentlich unterstützt?
bin mir nicht ganz sicher. beim intel ab dem Pentium III und beim AMD ab dem AMD64. wobei ich mir da bei dem Septeron oder wie der heisst nicht ganz sicher bin. AMD XP koennen SSE nur zum teil anwenden.
Meep Meep
-
Meep Meep schrieb:
AMD XP koennen SSE nur zum teil anwenden.
wieso zum teil?
obige kopierroutine ist übrigens verbugt - immer dann, wenn die blockgrösse ein vielfaches von 4 ist, hast du ein problem
-
camper schrieb:
Meep Meep schrieb:
AMD XP koennen SSE nur zum teil anwenden.
wieso zum teil?
Zitat:
AMD unterstützt erst mit seinen aktuellsten Prozessoren SSE vollständig. Davor wurden nur die Befehle unterstützt, die mit 64-Bit-Registern arbeiten.http://www.computerbase.de/lexikon/SSE <- da hatte ich das mal gelesen.
Meep Meep
-
camper schrieb:
obige kopierroutine ist übrigens verbugt - immer dann, wenn die blockgrösse ein vielfaches von 4 ist, hast du ein problem
Meine? Wo?
-
hm, ich kann nur hierdrauf verweisen:
http://board.win32asmcommunity.net/index.php?topic=14559.0
http://board.win32asmcommunity.net/index.php?topic=6465.0
http://board.win32asmcommunity.net/index.php?topic=20362.0
eventuell ist da was brauchbares dabei.
-
wenn wir schon beim link geben sind:
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/25112.PDF
enthält im abschnitt 5.12 ebenfalls eine ganze reihe kopierroutinen und diskutiert deren vor- und nachteileaudacia schrieb:
camper schrieb:
obige kopierroutine ist übrigens verbugt - immer dann, wenn die blockgrösse ein vielfaches von 4 ist, hast du ein problem
Meine? Wo?
jetzt wo du fragst, bin ich mir auch nicht mehr sicher; aber war es nicht so, dass bei ecx == 0 der befehl 2^32 mal ausgeführt wird ? das ist bei mir seit dem Z80 (LDIR) so drin.