vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 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
Re: gleichzeitige Verarbeitung von Daten in mehreren Tasks 
Autor: Jojo
Datum: 08.09.18 17:54

Ich dachte eigentlich nicht dass die Datenbank das Problem ist.

Die Funktion bekommt einen Datensatz. Dieser enthält Informationen über ein Bild, das irgendwo liegt. Das kann ein Lokaler Ort im Netzwerk sein oder (in 90%) eine Internet Adresse die per http oder FTP abgerufen wird.
Die Funktion holt sich das Bild als stream in ein Object. Das wird dann geprüft und nach bestimmten Regeln (weißen Rand abschneiden, bei bestimmten Formaten drehen usw.
Dann kommt die Funktion, die Das Thumbnail erstellt. Dabei wird das Bild auf 8x8 Pixel reduziert und in sw/Weiß umgewandelt. Das ganze wird dann der Hash.

Am Ende wird dann einfach nur der Hash in den datensatz eingetragen (der wird nicht offen gehalten oder so … ist ein update auf dem Primary Key).

Die Funktionen der Bildverarbeitung müssten deutlich mehr Rechenleistung verschlingen als das update auf die Datenbank … dennoch: Der Effekt ist da und es verändert sich

Ich habe es mal auf Async / Await geändert … jetzt verändert es sich etwas mehr … aber auch unbefriedigend

'...        
For Each DR As DataRow In DT.Rows
            Do Until MyTaskCounter < 100
                Application.DoEvents()
            Loop
 
            RunAsync(DR)
 
        Next
 
    End Sub
 
 
    Async Sub RunAsync(DR As DataRow)
 
        Try
            MyTaskCounter += 1
            Await Task.Run(Sub()
                               Set_ImageHash(DR)
                           End Sub)
        Catch ex As Exception
        End Try
        MyTaskCounter -= 1
    End Sub
Die Bewertung ist schwer, weil die Bilder sehr unterschiedlich groß sind. Hier mal ein paar Werte:

Bei 10 Tasks werden ca. 1 Bild pro sekunde verarbeitet
Bei 100 Tasks werden ca. 6 Bilder pro sekunde verarbeitet
Bei 500 Tasks werden ca. 10 Bilder pro sekunde verarbeitet cpu 30-35%

Ich vermute eher das Problem in der Internetverbindung … ich denke, dass die das ausbremst.

Joachim

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
gleichzeitige Verarbeitung von Daten in mehreren Tasks1.104Jojo06.09.18 11:34
Re: gleichzeitige Verarbeitung von Daten in mehreren Tasks664Franki08.09.18 03:46
Re: gleichzeitige Verarbeitung von Daten in mehreren Tasks661Manfred X08.09.18 14:33
Re: gleichzeitige Verarbeitung von Daten in mehreren Tasks683Jojo08.09.18 17:54
Re: gleichzeitige Verarbeitung von Daten in mehreren Tasks634Manfred X09.09.18 13:19
Re: gleichzeitige Verarbeitung von Daten in mehreren Tasks593Jojo09.09.18 20:17
Re: gleichzeitige Verarbeitung von Daten in mehreren Tasks687Franki10.09.18 02:42
Re: gleichzeitige Verarbeitung von Daten in mehreren Tasks634Jojo10.09.18 07:59
Re: gleichzeitige Verarbeitung von Daten in mehreren Tasks653Manfred X10.09.18 08:44
Re: gleichzeitige Verarbeitung von Daten in mehreren Tasks642Jojo10.09.18 09:17
Re: gleichzeitige Verarbeitung von Daten in mehreren Tasks612Kuno6010.09.18 13:38
Re: gleichzeitige Verarbeitung von Daten in mehreren Tasks605Jojo10.09.18 14:14

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