![]() |
SetProcessAffinityMask und das DEC
Im Moment bin ich dabei mir ein Tool zur Prüfsummenberechnung mithilfe des DEC zu erstellen. Nun kann die Berechnung der Prüfsumme bei größeren Dateien ja recht lange dauern. Jetzt hatte ich die Idee meiner Anwendung mithilfe von
Delphi-Quellcode:
meherere Prozessoren für die Dauer der Berechnung zuzuweisen um die Berechnung zu beschleunigen. Die Berechnung der Prüfsumme selber läuft über die Funktion
SetProcessAffinityMask
Delphi-Quellcode:
aus dem DEC.
THash_MD5.CalcFile
Jetzt meine Frage: Funktioniert das so wie ich es mir vorstelle oder wird das doch komplizierter zu implementieren? Bevor jetzt einer fragt warum ich das nicht selber ausprobiere: Zur Zeit besitze ich noch keinen PC mit mehreren Prozessoren und kann es deswegen nicht ausprobieren. |
AW: SetProcessAffinityMask und das DEC
Nein, natürlich bringt das rein garnichts, denn wenn der Prozess nur mit einem Thread rechnet, dann ist es gégal, wieviele ääthreads man zuweist.
Es wird immer nur der eine Thread rechnen und das eben nur auf einem Kern. PS: Windows kümmert sich selber um die Threadverteilung, da mu´man nix zuweisen, es sei denn man will, daß da Programm nur auf bestimmten kernen läuft, oder daß eine Multithreadanwendung dennoch nur auf einer CPU läuft. Ein Bauarbeiter braucht 1 Tag, um 10 Löscher auszubaggern, wenn er einen Bagger hat. Wieviel Zeit braucht dieser Bauarbeiter, wenn man ihm 4 Bagger hinstellt? Bauarbeiter = Thread Bagger = verfügbare Kerne (CPU) |
AW: SetProcessAffinityMask und das DEC
Ok, das habe ich verstanden. Gibt es denn eine Möglichkeit die Berechnung auf mehrere Threads aufzuteilen?
|
AW: SetProcessAffinityMask und das DEC
theoretisch ja, indem man die berechnung aufteilt.
> mehrere stücke der Datei gleichzeitig berechnen und am Ende die Einzelergebnisse zusammenzurechnen, Aber lohnt sich nicht wirklich, da der Dateizugriff eher die bremsende Kraft ist. Und mehrer gleichzeitige Dateizugriffe behindern sich auch noch gegenseitig, was es am Ende noch langsamer macht. Was man machen kann, kleinere Dateistücke asynchron einlesen, wärend ein anderer Teil grade gehasht wird, aber wenn das Hashen sehr schnell ist, dann lohnt sich der Aufwand nicht wirklich. |
AW: SetProcessAffinityMask und das DEC
Zitat:
das hängt davon ab, ob die 4 Bagger ferngesteuert werden können und wie gut der Bauarbeiter mit der Fernsteuerung umgehen kann. Wenn "der Bauarbeiter" eine Bauarbeiterin ist dann hat sie gute Chancen, mit 4 Baggern schneller zu sein, als mit einem Bagger, denn Frauen sind bekanntlich die besseren Multitasker. Da aber das DEC in dieser Beziehung nicht fernsteuerbar ist, ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz