AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SetProcessAffinityMask und das DEC

Ein Thema von ringli · begonnen am 29. Mai 2011 · letzter Beitrag vom 30. Mai 2011
Antwort Antwort
ringli

Registriert seit: 7. Okt 2004
509 Beiträge
 
Delphi 11 Alexandria
 
#1

SetProcessAffinityMask und das DEC

  Alt 29. Mai 2011, 17:53
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 SetProcessAffinityMask 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 THash_MD5.CalcFile aus dem DEC.

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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: SetProcessAffinityMask und das DEC

  Alt 29. Mai 2011, 18:11
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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (29. Mai 2011 um 18:15 Uhr)
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
509 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: SetProcessAffinityMask und das DEC

  Alt 29. Mai 2011, 18:17
Ok, das habe ich verstanden. Gibt es denn eine Möglichkeit die Berechnung auf mehrere Threads aufzuteilen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: SetProcessAffinityMask und das DEC

  Alt 29. Mai 2011, 18:31
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.062 Beiträge
 
Delphi XE2 Professional
 
#5

AW: SetProcessAffinityMask und das DEC

  Alt 30. Mai 2011, 09:04
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)
Hallo himitsu,
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, ...
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz