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
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

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

AW: Langsames Multithreading

  Alt 27. Mai 2015, 13:38
Eigentlich sollte COINIT_APARTMENTTHREADED ohne Thread-Locking arbeiten, da dort der Programmierer angibt, daß er nichts Threadübergreifend benutzt.
Zitat:
Wenn Sie Apartmentthread angeben, übernehmen Sie die folgenden Garantien:

* Sie greifen auf jedes COM-Objekt von einem einzelnen Thread aus zu. Sie setzen keine COM-Schnittstellenzeiger gemeinsam bei mehreren Threads ein.
* Der Thread weist eine Meldungsschleife auf. (Siehe Fenstermeldungen in Modul 1.)
Aber das sollte natürlich auch nur auf COM-Zeugs Einfluss haben.
$2B or not $2B
  Mit Zitat antworten Zitat
BLin4ik

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

AW: Langsames Multithreading

  Alt 27. Mai 2015, 13:50
@Captnemo

Würde die Dateien etwas kleiner sein, wäre das sicherlich kein Problem, die Datei wird bereits gepuffert,
aber natürlich nicht komplett in den Speicher genommen, da diese über Millionen Zeilen beinhalten kann und
der Zugriff über eine StringList schon etwas an Zeit kosten kann.

@himitsu
Die CSVFile klasse ist eine einfache Reader-Klasse, hier wird die Datei eingelesen und
gepuffert.
Das ReadLine liest die Zeile in eine StringListe ein, sodass man über einen Index an die verschiedenen Spalten
rankommt.

Die Daten liegen alle auf einer Festplatte und zwar auf der SSD.

@Patito
Also der FastMM ist bei mir im Einsatz

@OlafSt
"COINIT_MULTITHREADED" hatte ich bereits schon ausprobiert, ist das selbe Ergebnis.

Der Algorithmus ist natürlich um einiges ausgereifter und so gut wie fertig, deswegen
verwende ich die CoInitializeEx Sachen, da ich mit COM Arbeite.
Aber es scheitert ja schon bereits bei einer einfachen Schleife.
  Mit Zitat antworten Zitat
CarlAshnikov

Registriert seit: 18. Feb 2011
Ort: Erfurt
108 Beiträge
 
Delphi XE5 Enterprise
 
#13

AW: Langsames Multithreading

  Alt 27. Mai 2015, 13:57
Die Threads müssen zugewiesen werden, da das in Delphi 5 nicht automatisch passiert und alle nur den ersten Kern verwenden.
Das stimmt nicht, die Verteilung der Threads hat mit Delphi 5 nichts zu tun.
Sebastian
  Mit Zitat antworten Zitat
BLin4ik

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

AW: Langsames Multithreading

  Alt 27. Mai 2015, 14:03
Die Threads müssen zugewiesen werden, da das in Delphi 5 nicht automatisch passiert und alle nur den ersten Kern verwenden.
Das stimmt nicht, die Verteilung der Threads hat mit Delphi 5 nichts zu tun.
Nimmt man die normale TThread-Klasse kriegen die Threads immer den ersten Kern zugewiesen (wurde getestet),
deswegen habe ich eine eigene MultiThread-Klasse erstellt die sich im Kreis dreht, sodass
je nach Anzahl der Threads, alle Kerne gleichmäßig bedient werden.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Langsames Multithreading

  Alt 27. Mai 2015, 14:09
Die Zuweisung nimmt Windows vor und nicht TThread.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#16

AW: Langsames Multithreading

  Alt 27. Mai 2015, 14:31
Nimmt man die normale TThread-Klasse kriegen die Threads immer den ersten Kern zugewiesen (wurde getestet),
Windows sollte die Threads migrieren wenn sie mehr als einen Kern auslasten würden


Das ReadLine liest die Zeile in eine StringListe ein, sodass man über einen Index an die verschiedenen Spalten
rankommt.
Und da ist doch schon die Speicherverwaltung (Strings und die Stringlist selbst).
Frage in den Raum: Verwendet Delphi 5 schon einen Speichermanager, den Multithreading nicht sofort in die Knie zwingt?
  Mit Zitat antworten Zitat
BLin4ik

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

AW: Langsames Multithreading

  Alt 27. Mai 2015, 15:01
Juhu!

Ich habe die Lösung gefunden, der FastMM hat mir durch eine Einstellungen einen Strich
durch die Rechnung gemacht! Und zwar musste ich "NeverSleepOnThreadContention" akvieren
dadurch kriege ich volle Leistung, die Threads wurden nämlich immer Schlafen gelegt.


Quelle: http://www.thedelphigeek.com/2011/09...entionnot.html
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#18

AW: Langsames Multithreading

  Alt 27. Mai 2015, 15:26
Und ich würde die Threads nicht von Hand auf einzelne Kerne zuweise und es dem OS überlassen. Hingegen aller Gerüchte weiß Windows selbst sehr gut wie es mit Speicher und Threads am besten umgeht. Man gewinnt nichts außer zusätzliche, überflüssigen Code, der auch noch fehlerhaft sein kann. Und sollte Microsoft in Zukunft was am Threadhandling ändert, schießt man sich eventuell eher ein Eigentor.

Ich sage mir immer: Was Windows selber machen/verwalten kann, soll es auch selber machen. Wozu mir zusätzliche Arbeit machen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 08: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