Große Datenmenge Verarbeiten

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von TenaciousD.

    Große Datenmenge Verarbeiten

    Moin Moin,

    Also ich hab nen Problem mit Daten.
    Um es mal zu "umschreiben" kann ich nur sagen das ich eine Listbox mit ca. 350000 Einträgen hab. Diese Müssen alle Verarbeitet werden d.h jede Zeile muss angeschaut werden wenn sie Bestimmte "tags" enthält soll sie in eine txt geschrieben werden. Mein Problem ist das der vorgang so ca. 3 Stunden Dauert. Habt Ihr eine Idee wie das Schneller gehen kann?

    Hab nen Win7 64 bit . 4 Gb Ram

    Schonmal Danke im Vorraus. =)

    Das ist der Vorgang der ablaufen soll.

    VB.NET-Quellcode

    1. For i As Integer = 0 To ListBox1.Items.Count - 1
    2. Application.DoEvents()
    3. Label1.Text = i
    4. If Not ListBox1.Items.Item(i).ToString.StartsWith(">") Then
    5. If Not ListBox1.Items.Item(i).ToString.StartsWith("ul") Then
    6. If Not ListBox1.Items.Item(i).ToString.StartsWith(" title=") Then
    7. TextBox1.Text &= ListBox1.Items.Item(i).ToString & vbCrLf
    8. End If
    9. End If
    10. End If
    11. Next
    Bitte sofort das Applicaton.DoEvents() entfernen! Das versetzt deine Anwendung in Zustände jenseits von Gut und Böse. Die MSDN selbst sagt, dass es zu unvorhergesehenem Verhalten kommen kann.

    Ansonsten würde ich sagen: Hol dir die Sachen nicht immer wieder aus der ListBox. Pack sie einmal in eine Variable, und gehe diese durch. Controls sind zum Anzeigen da! Und anstatt der TextBox würde ich einen StringBuilder verwenden, der ist auf große Mengen ausgelegt.

    Kannst ja mal gucken, wie viel sich dadurch schonmal tut.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    @TenaciousD:: Oder so: Daten in eien List(Of String), diese per DataBinding an die ListBox zum Ansehen hängen.
    Auch für die Ausgabe mach Dir eine List(Of String), an die Du die gesuchten Elemente addest, da gibt es keinerlei String-Bearbeitungs-Operationen.
    Wenn Du fertig bist, machst Du

    VB.NET-Quellcode

    1. TextBox1.Lines = list2.ToArray
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!