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
xaromz

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

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 9. Mai 2013, 22: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
 
#2

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 9. Mai 2013, 22: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 22:59 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 10. Mai 2013, 08: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
10.055 Beiträge
 
Delphi 12 Athens
 
#4

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 10. Mai 2013, 09: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
Insider2004
(Gast)

n/a Beiträge
 
#5

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 10. Mai 2013, 09: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.165 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

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

Mavarik
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#7

AW: Kein wirklicher Geschwindigkeitsvorteil durch Threads?

  Alt 10. Mai 2013, 10:35
Schau dir die OmniThreadLib mal bitte an.
Mit der kann man einfacher Multithreaded programmieren.

Mit einer Collection (hier die Dateinamen rein) und dem ForEach wäre dir gelaube ich ganz gut geholfen.

https://code.google.com/p/omnithreadlibrary/
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  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 07:16 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