AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Kein wirklicher Geschwindigkeitsvorteil durch Threads?
Thema durchsuchen
Ansicht
Themen-Optionen

Kein wirklicher Geschwindigkeitsvorteil durch Threads?

Ein Thema von Ginko · begonnen am 9. Mai 2013 · letzter Beitrag vom 12. Mai 2013
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 9. Mai 2013, 23:09
Ich verstehe auch nicht ganz, was du zu erreichen suchst oder dir erhoffst. Ist das "umwandeln" wirklich so aufwändig? Wenn ja, und das mehr oder minder gleichzeitig geschehen soll, würde ich dem Thread doch einmal mit auf den Weg geben, wie der Dateiname lauten soll und ihn dann das komplette Umwandeln, Anlegen der Datei, Reinschreiben und schließen übernehmen lassen.

Und: Wozu die WinAPI-Funktionen? Ich finde die Delphi-Klasse TThread viel sympathischer
  Mit Zitat antworten Zitat
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#12

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 9. Mai 2013, 23:15
Ok, werde ich machen, kennt ihr ein paar gute Links zu dem Thema ?
Einen hab ich grad gefunden http://www.michael-puff.de/Programmi...mit_Delphi.pdf, ich seh grad der ist so umfangreich, der langt sicher erstmal...

@Der schöne Günther, das habe ich ja alles gemacht in der Funktion Umwandler
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 9. Mai 2013, 23:25
Ja, genau dieses Tutorial ist auch das einzige, was ich wirklich gelesen habe

Trotzdem bin ich kurz danach auf TThread-Objekte umgestiegen. Einfach nur eine .Execute-Methode schreiben, eventuell noch eine onTerminate um im Hauptthread-Kontext das irgendwie anzuzeigen, dass man fertig ist und die Sache hat sich.

Ich weiß nicht, was genau in deiner Threadfunktion vor sich geht, aber da Datei-Operationen auf Prozessbasis stattfinden könnte ich mir irgendwie vorstellen, dass der zweite Thread bsp. solange blockiert, bis der erste seine Datei zuende geschrieben hat. Welche Funktionen für die Dateioperationen benutzt du und in welcher Reihenfolge?
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#14

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 9. Mai 2013, 23:36
Hallo,

eine Sache ist bei Dateioperationen grundsätzlich zu beachten: meist ist der Dateizugriff der Flaschenhals; mit parallelen Zugriffen bremst man eine Festplatte (zumindest eine klassische) eher aus als das die Gesamtoperation beschleunigt wird.
Will sagen: Bevor Du Dein Programm parallelisierst, schau erst mal, wo genau die Zeit liegen bleibt.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#15

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 9. Mai 2013, 23:57
Also die Funktion Umwandler sieht so aus:
Delphi-Quellcode:
function Umwandler(pDateiname: Pointer): Integer;
var
  AProcess: TProcess;
begin
  AProcess := TProcess.Create(nil);
  try
    AProcess.Executable := ExtractFilePath(application.ExeName)+'Umwandler.exe';
    AProcess.Parameters.Add(PThreadParams(pDateiname)^.Dat);
    AProcess.Options := AProcess.Options + [poWaitOnExit, poNoConsole];
    AProcess.Execute;
  finally
    AProcess.Free;
  end;
end;
Ob es TProcess in Delphi gibt weiß ich nicht genau.

Danke für die Antworten.

Geändert von Ginko ( 9. Mai 2013 um 23:59 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 10. Mai 2013, 09:39
Ich bin verwirrt. Ich dachte, es geht um Threads? Entweder ist es für mich noch zu früh am Morgen, oder...

Du machst eine Reihe von Threads auf, wartest im Hauptprogramm auf die Beendigung des Threads, den du zuletzt aufgemacht hast. Der muss überhaupt nicht zwingend der letzte sein, wenn der zu Ende ist, können noch gut zehn andere laufen, obwohl sie früher gestartet wurden.

Die Threads selber erstellen einen komplett neuen Prozess (!), und warten wiederum auf die Beendigung dieses. Wozu überhaupt die Threads? Du kannst diese PRozesse doch genauso gut im Hauptthread deines Programms starten lassen.

Dass die Threads hier keinen Geschwindigkeitsvorteil bringen ist doch klar - Wenn es vorher schon auf mehrere Prozesse hinauslief, dann waren es vorher so oder so auch schon mehrere Threads.

mfg
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 10. Mai 2013, 10:19
Am sinnvollsten wäre alle Programme zu starten und dann zu warten bis die alle fertig sind. Das war es dann auch schon.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#18

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 10. Mai 2013, 10:53
Hallo, ich versuche gerade mehrere Dateien zu bearbeiten. Um das ganze zu beschleunigen, versuche ich es mit Threads zu machen. Es bringt aber nur ca 1sek. Bei der Auslastung wurde auch nur ein CPU beansprucht (die andere nur ein wenig)
Mal abgesehen davon, dass Du die Threads falsch anwendest, liegt das Hauptproblem am HDD-Zugriff.
Ein Lesekopf kann nicht gleichzeitig an mehreren Stellen sein. Da summieren sich die Positionierungszeiten...
Wenn man regelmässig so etwas machen muss, ist bessere Hardware (SSD) oder mehrere HDDs erforderlich.
Ausserdem weist man Threads verschiedenen Cores zu - wenn man welche hat...
  Mit Zitat antworten Zitat
Insider2004
(Gast)

n/a Beiträge
 
#19

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 10. Mai 2013, 10:54
1. Hinweis: Festplatten sind nicht Thread-fähig.
2. Hinweis: Um Thread-Programmierung richtig zu machen, braucht man einiges an Erfahrung. Unser Hirn kann einfach keine Parallel-Kodierung leisten. Deshalb, such dir ein gutes Beispiel. Wobei die meisten Beispiele ziemlich kümmerlich sind.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 10. Mai 2013, 11:28
Naja und im übrigen - wie es auch in der SQLite Docu verlinkt ist - Threads sind schlecht

Mavarik
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 21:47 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