AGB  ·  Datenschutz  ·  Impressum  







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

Langsames Multithreading

Ein Thema von BLin4ik · begonnen am 27. Mai 2015 · letzter Beitrag vom 27. Mai 2015
Antwort Antwort
BLin4ik

Registriert seit: 23. Nov 2011
40 Beiträge
 
Delphi 5 Enterprise
 
#1

AW: Langsames Multithreading

  Alt 27. Mai 2015, 11:43
Die Verteilung wird vorgenommen, weil ich so die volle Leistung von jedem Kern erreichen möchte, um
dadurch das maximal an Perfomance zu gewinnen und sich die Threads nicht stören.

Die Threads müssen zugewiesen werden, da das in Delphi 5 nicht automatisch passiert und alle
nur den ersten Kern verwenden.

Hier ein Beispiel wo es bereits schon klemmt,
es reicht schon, wenn der Thread einfach nur in der Schleife läuft:
Code:
...
begin
  CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
  try

    while not Terminated do
    begin

      for i := 0 to MaxCount do //MaxCount kann über 30.000 Zeilen gehen
        FCSVFile.ReadLine; //Die Zeile wird innerhalb der Klasse ausgelesen und aufbereitet

      break;

    end;

  finally
    CoUninitialize;
  end;
end;

Geändert von BLin4ik (27. Mai 2015 um 11:48 Uhr)
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
517 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Langsames Multithreading

  Alt 27. Mai 2015, 11:48
Ohne jemals (bewusst) etwas mit Threads gemacht zu haben: Wäre es möglich das deine CSV-Klasse gar nicht multithreadingfähig ist?
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.782 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Langsames Multithreading

  Alt 27. Mai 2015, 11:50
.. arbeiten dann beide Threads mit ein und der selben Instanz von FCSVFile?

Wäre es möglich jdem Thread eine eigene Instanz zu spendieren?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
BLin4ik

Registriert seit: 23. Nov 2011
40 Beiträge
 
Delphi 5 Enterprise
 
#4

AW: Langsames Multithreading

  Alt 27. Mai 2015, 11:55
Jeder Thread hat seine eigene CSVFile-Instanz, dafür wurde schon gesorgt,
das muss auch so sein, da alle Threads ihre eigene Datei verarbeiten.

Es wird nichts Global angesprochen und bei diesem Fall gibt es auch
keine Critical Sections.
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#5

AW: Langsames Multithreading

  Alt 27. Mai 2015, 12:04
Wie würde es denn aussehen, wenn du die Daten in die Instanzen von FCSV erst komplett einliest, und dann erst beide Threads startest?
Dann hättest du eine Beeinflussung durch Filezugriffe erst mal ausgeschlossen, da du ja im Test die Daten auch nirgends ausgibst.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Langsames Multithreading

  Alt 27. Mai 2015, 12:08
Was macht MaxCount und ReadLine intern?

Und sind die Dateien alle auf der selben Festplatte?



Windows verteitlt das eigentlich schon recht ordentlich und wenn jetzt zusätzölich noch irgendein Programm auf dem Kern richtig läuft, dann bremst du dich unnötig selber aus, weil du deine Threads nicht verschieben lässt.
Ein Therapeut entspricht 1024 Gigapeut.
  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 09: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