vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 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
Performanz der Anwendung steigern: Kanon-Analyse mit vielen Datenbankzugriffen 
Autor: Vaubehnet
Datum: 06.06.18 11:16

Hallo zusammen,

ich habe eine fertige Anwendung, mit der ich Texte auf Worthäufigkeiten untersuche und das Ergebnis in eine Datenbank schreibe. Das funktioniert auch, jedoch würde ich gerne die Performanz steigern und bin auf Eure Vorschläge gespannt.


Aktuell erfolgt eine Eingabe der Texte in eine Textbox; die Texte haben alle einen Umfang von ca. 500 bis ca. 2000 Worten. Nach einer Bereinigung wird die Anzahl der Worte berechnet und jedes Wort einzeln verarbeitet:
- Ist das Wort in der Datenbank noch nicht vorhanden, dann füge es ein (Insert) und setzte den Zähler auf 1 (Feld in der Datenbank: Anzahl; Wert: 1)
- Ist das Wort in der Datenbank vorhanden, setze den Zähler um eins hoch (Update).

D.h. ich habe für jeden Text genauso viele Datenbankzugriffe wie Worte. Da bestimmte Worte mehrfach vorkommen, sehe ich hier eine Möglichkeit, die Anwendung zu optimieren.

Meine Überlegung:
Wenn ich einen Text zunächst im Arbeitsspeicher verarbeite, könnte ich die Anzahl der Datenbankzugriffe stark reduzieren. Häufige Worte wie z.B. "die", "der", "das" würden so zunächst gezählt und dann in einem Rutsch in die Datenbank geschrieben.

Die Frage ist jedoch, wie ich das am Besten anstelle? Soweit ich weiß, kann z.B. eine "List (of Strings)" nur eindimensional (d.h. z.B. nur die Worte, aber nicht die Anzahl) verarbeiten.
Außerdem bräuchte ich ein Objekt im Arbeitsspeicher, welches durchsuchbar ist und intern eine (Hochzählung) vornimmt. Ein Array ist vermutlich zu sperrig, oder?

Ich sage schon mal Danke für Eure Vorschläge!

vaubehnet

---
Verwendete Programmversionen:
Windows 7 64 bit sowie Windows 10 Prof.
Visual Studio 13 Professional
Microsoft Prof. 2010 (= Version 14)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Performanz der Anwendung steigern: Kanon-Analyse mit vielen Datenbankzugriffen 
Autor: Manfred X
Datum: 07.06.18 21:14

Hallo!

Schau Dir mal die generische Dictionary an.

Als Key (String) eines Entry verwendest Du jeweils eines der Worte im Text,
im Value (Integer) setzt Du die Häufigkeit hoch.
Beispiele zur Dictionary findest Du im Einsteigerforum.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Performanz der Anwendung steigern: Kanon-Analyse mit vielen Datenbankzugriffen 
Autor: Vaubehnet
Datum: 08.06.18 09:15

Hallo Manfred,

als ersten Zwischenschritt habe ich jetzt schon mal mit einem zweidimensionalen Array gearbeitet.
Dies liest zunächst aus der Datenbank die 20 häufigsten Worte aus.
Bei der Verarbeitung von Texten wird zunächst das Array durchsucht, ob das Wort hier vorkommt und dann der Zähler im Array hochgesetzt.
Am Schluss erfolgt dann per Schleife durch das Array das Update der Wortzählungen in der Datenbank.
Das spart schon mal eine Menge Datenzugriffe und das Programm läuft auch - grob geschätzt durch Blick auf die Uhr - etwa 15-20 Prozent schneller. Es bleiben aber noch viele Datenbankzugriffe für die selteneren Worte und ich hatte den Eindruck, dass ab 20 Worten aufwärts auch der Schleifendurchlauf durch das Array keinen erheblichen Vorteil mehr bringt.

Daher ist das Dictionary eine Option, die ich mir ansehen werde.
Danke für den Tipp!

vaubehnet

---
Verwendete Programmversionen:
Windows 7 64 bit sowie Windows 10 Prof.
Visual Studio 13 Professional
Microsoft Prof. 2010 (= Version 14)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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