FastMem - Include [ASM]
FastMem - Include [ASM]
Wrapper für die Copy & Move - Memory Funktionen der ASM - Lib von http://www.agner.org/optimize/ .
In meinem Test ist die CopyMemory Funktion bis zu >10x schneller als CopyMemory() in PB. Die Funktionen benötigen einen Prozessor mit SSE-Support.
Download:
http://paladiumproject.q-soft.ch/public ... astMem.zip
//Edit: Update, 11:40:
Das Include prüft nun automatisch ob die benötigte SSE-Funktionalität vorhanden ist und verwendet ansonst die Standard PB - Funktionen.
In meinem Test ist die CopyMemory Funktion bis zu >10x schneller als CopyMemory() in PB. Die Funktionen benötigen einen Prozessor mit SSE-Support.
Download:
http://paladiumproject.q-soft.ch/public ... astMem.zip
//Edit: Update, 11:40:
Das Include prüft nun automatisch ob die benötigte SSE-Funktionalität vorhanden ist und verwendet ansonst die Standard PB - Funktionen.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Update:
Gruß, Alex
- Wrapper für Windows/Linux/MacOS x86 & x64 komplett
- MoveMemory() per Compiler-Switch abwählbar (spart ~5Kb)
Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Mit welchen Speicherblöcken bzw. mit wie vielen Wiederholungen hast du den Test gemacht? Wenn der Speicherblock > dem L2 Cache des Prozessors ist sollte die ASM - Version viel schneller sein.milan1612 hat geschrieben:So "fast" ist das hier aber nicht :Windows 7 x64 + Core2Duo E8400 @ 3.6 GHzPB: 344 ms
ASM: 938 ms
SSSE3 sollte dein Prozessor eigentlich unterstützen:
http://software.intel.com/en-us/article ... mizations/
Bzw. hast dus schonmal unter x86 getestet?
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Ok.
Hats sonst noch jemand getestet? Würde mich interessieren was sonst für Werte rauskommen. (Immer mit Angabe von Prozessor und Speicher - Blockgröße da es entscheidend ist ob man Blöcke > oder < L2/L3 - Cache verwendet).
Gruß, Alex
Hats sonst noch jemand getestet? Würde mich interessieren was sonst für Werte rauskommen. (Immer mit Angabe von Prozessor und Speicher - Blockgröße da es entscheidend ist ob man Blöcke > oder < L2/L3 - Cache verwendet).
Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Mhm, dein Turion unterstützt kein SSSE3, daher wird er den SSE2 Code nehmen.
Gruß, Alex
Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Hab jetzt mal ein bisschen herumprobiert und festgestellt das PB bei Werten die +-48 um den L2 Cache liegen wessentlich langsamer ist als ASM (>10x) und sonst ASM zwischen gleichschnell und bis zu 2.5x schneller schwankt.
Also Ich hab 8 MB (2 * 4 MB) L2 Cache, und bei Werte die durch 4 MB teilbar sind bricht bei PB der Speed ein.
Also Ich hab 8 MB (2 * 4 MB) L2 Cache, und bei Werte die durch 4 MB teilbar sind bricht bei PB der Speed ein.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Man sollte vieleicht noch anmerken das PB die memcpy Procedur der MSVCRT.dll nutzt.
Vieleicht ist es sinnvoll noch die Versionsnummer der DLL mit in den Vergleich einzubeziehen. Könnte mir vorstellen das es verschiedene Versionen gibt, z.B. das Win7 ne neue Version mit optimierter Kopierprozedur mitliefert.
Vieleicht ist es sinnvoll noch die Versionsnummer der DLL mit in den Vergleich einzubeziehen. Könnte mir vorstellen das es verschiedene Versionen gibt, z.B. das Win7 ne neue Version mit optimierter Kopierprozedur mitliefert.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!