vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Parallel.Invoke und System.Diagnostics 
Autor: Jojo
Datum: 11.02.14 11:48

Hallo,

ich habe das folgende Problem:

Ein sehr großes Programm macht jede Nacht eine Verarbeitung von vielen unterschiedlichen Daten. Hierbei liegt das Problem weniger in der Masse der Daten sondern in vielen unterschiedlichen Schritten die in bestimmter Reihenfolge abgearbeitet werden müssen.
Dabei werden z.B. Artikeldaten eingelesen, dann werden die Bilder dazu geprüft und erstellt, die Artikeldaten mit den Preisen verknüpft usw ...

Alles in allen dauert das Programm so 1 Stunde. (I7, SQL2012, 16GB Ram, SSD-Platten, Server2008R2 usw)

Die Struktur des Programms ist so dass die Bereiche, die nicht auf einander angewiesen sind parallel ausgeführt werden.

z.B.

 
Parallel.Invoke(Sub()
   Import_Artikel()
End Sub,
Sub()
   Import_Kunden()
End Sub)
 
'...
 
Verknüpfe_Kunden_mit_Artikel()
Das ist deutlich vereinfacht.

Das verknüpfen der Artikel_mit_den_Kunden startet erst wenn beide Tasks (Import_Kunden und Import_Artikel) beendet sind.

In der Praxis sind das aber nicht nur 2 sondern bis zu 20 Parallele Tasks.

Ich möchte jetzt herausfinden wo ich Optimierungsmöglichkeiten habe.

Wenn z.B. ein Task 5 Minuten dauert und alle andern nur 5 Sekunden, dann ist das Zeitverschwendung.

Ich wollte mir daher eine Art Loging Funktion bauen, die mir immer die Start und die Endzeit speichert, sodass ich das später analysieren kann.

Ich habe das versucht mit:

 
Dim ST As System.Diagnostics.StackTrace = New System.Diagnostics.StackTrace, FS _
  As String = ""
For F = 0 To ST.FrameCount - 1
   FS += "/" & ST.GetFrame(F).GetMethod.Name
Next
das funktioniert bei den Subs, die ohne Parallel.Invoke gestartet werden.
Aber die, innerhalb der Parallel.Invoke gestarteten Tasks geben mir dann so was zurück:
/PerformWaitCallback/Dispatch/System.Threading.IThreadPoolWorkItem.ExecuteWorkItem/ExecuteEntry/
ExecuteWithThreadLocal/Run/RunInternal/ExecutionContextCallback/Execute/InnerInvoke/_Lambda$__14/Execute


Daher meine Frage:
Hat jemand eine Idee, wie ich das anders lösen kann oder gibt es die Möglichkeiten einen Task innerhalt des Parallel.Invoke zu "benennen"?

Joachim

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Parallel.Invoke und System.Diagnostics1.462Jojo11.02.14 11:48
Re: Parallel.Invoke und System.Diagnostics900ModeratorFZelle11.02.14 16:35
Re: Parallel.Invoke und System.Diagnostics847Jojo11.02.14 16:43
Re: Parallel.Invoke und System.Diagnostics1.048ModeratorDaveS11.02.14 17:29
Re: Parallel.Invoke und System.Diagnostics855Jojo11.02.14 17:38
Re: Parallel.Invoke und System.Diagnostics876ErfinderDesRades28.02.14 00:33
Re: Parallel.Invoke und System.Diagnostics822ModeratorDaveS28.02.14 20:26
Re: Parallel.Invoke und System.Diagnostics842ErfinderDesRades28.02.14 20:47
Re: Parallel.Invoke und System.Diagnostics851ModeratorDaveS28.02.14 20:59
Re: Parallel.Invoke und System.Diagnostics797Manfred X28.02.14 21:57
Re: Parallel.Invoke und System.Diagnostics848ErfinderDesRades28.02.14 22:09
Re: Parallel.Invoke und System.Diagnostics834Manfred X28.02.14 22:12
Re: Parallel.Invoke und System.Diagnostics868ModeratorDaveS01.03.14 07:28

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel