Hei,
Tällä koodilla olen tehnyt rivi vertailua, mutta ohjelmani on aivan liian hidas jos pitäisi esim verrata 30 tuhannen txt tiedosta toiseen joka on 8 tuhatta riviä niin kestäisi liian kauan.
Ohelman tarkoitus on siis verrata kahta teksti kenttää toisiinsa ja poistaa toisesta kentästä samankaltaisuudet.
Public Class Form1
Dim rivinumero As Integer = 0
Dim rivinumero2 As Integer = 0
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim poistorivit As Integer = TextBox1.Lines.Length
Do Until rivinumero2 = TextBox2.Lines.Length
For i As Integer = 0 To poistorivit - 1
If rivinumero2 = TextBox2.Lines.Length Then
Exit For
End If
If TextBox1.Lines(rivinumero) = (TextBox2.Lines(rivinumero2)) Then
TextBox1.Text = TextBox1.Text.Replace(TextBox2.Lines(rivinumero2), "")
End If
rivinumero += 1
If rivinumero = poistorivit Then
rivinumero2 += 1
rivinumero = 0
End If
Next
Loop
Label1.Text = rivinumero
Application.DoEvents()
End Sub
End ClassToimisiko tämä versio nopeammin?
Public Class Form1
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
TextBox1.Lines = TextBox1.Lines.Except(TextBox2.Lines).ToArray()
End Sub
End ClassHei,
Sinun antama koodisi toimii hyvin Kiitokset.
Miten ihmeessä se on noin nopea?
Yleisesti ottaen tietomäärien kasvaessa on käytettävän algoritmin valitseminen keskeistä nopeuden kannalta. Käyttämäsi algoritmi oli tyyppiä O(n^2), eli suunnilleen hitain mahdollinen tuohon tehtävään.
Laittamani koodi käyttää .Net frameworkiin sisältyvää Except -funktiota, joka siis palauttaa listalta ne elementit, jotka ei sisälly parametrina annettavaan listaan.
.Net frameworkin algoritmeja on miettineet ja kehittäneet alan ammattilaiset. Voisi siis sanoa että "pyörä kannattaa keksiä uudestaan" vain jos on luokkaa algoritmiguru ja on oikeasti varma että oma käyttämä algoritmi on tehokkaampi (tai muuten parempi) kuin .Net frameworkin vakioalgoritmit.
Myöskin sen vuoksi kannattaa käyttää frameworkin tarjoamia valmiita työkaluja, että koodista tulee selkeämpää.
Minulle ei ole vielä läheskään kaikki .net frameworkin algoritmit tuttuja.
Olen lähes varma että olen joutunut monta kertaa ns keksimään pyörän uudestaan, koska en ole tutustunut tarpeeksi hyvin noihin valmiisiin alkoihin.
Kiitos vielä koodistasi ja kommenteista.
Aihe on jo aika vanha, joten et voi enää vastata siihen.