2016-09-15 1 views
0

Ich habe eine Schleife, die etwa 300.000 mal bei jeder Iteration betreibe ich gespeichert:Was ist der schnellste Weg, Daten von vb.net zu erhalten?

time_elps = stwt.Elapsed.TotalMilliseconds 
read.Add(time_elps, OFV_best) 

Schließlich möchte ich nur die Werte von read (ein Wörterbuch natürlich) nehmen ein Diagramm auf Excel zu ziehen.

Ich habe versucht, diese Daten nach Excel zu exportieren:

oxl = CreateObject("Excel.application") 
oxl.Visible = True 
owb = oxl.Workbooks.Add 
osheet = owb.ActiveSheet 

For i = 0 To 100 
    osheet.Cells(i + 1, 1).Value = read.Item(read.Keys.ElementAt(i)) 
    osheet.Cells(i + 1, 2).value = read.Keys.ElementAt(i) 
Next 

und in eine Textdatei:

dauert es zu viel Zeit
objStreamWriter = New StreamWriter("C:\Users\Dr. Mohamed ElWakil\Desktop\data.txt") 

For i = 0 To read.Count - 1 
    objStreamWriter.WriteLine(CStr(read.Item(read.Keys.ElementAt(i)) & "," & (read.Keys.ElementAt(i)))) 
Next 

objStreamWriter.Close() 

In beiden Fällen ist es länger als die Zeit des Laufens der Code selbst.

Was schlagen Sie vor, um meine Daten einfach und schnell zu bekommen?

+1

Welche for-Schleife braucht zu viel Zeit? Im ersten Fall machen Sie nur 100 Iterationen, im zweiten Fall 300.000 Iterationen. – SEFL

+2

Der Wertabruf ist möglicherweise der Vorgang, der die meiste Zeit in Anspruch nimmt. Versuchen Sie, mit 'foreach var pair in read 'zu iterieren. Sie erhalten ein Paar mit Schlüssel und Wert und müssen den Wert nicht nach Schlüssel abfragen. –

+0

@SEFL, Extrahieren von Daten entweder durch Excel oder per Textdatei dauert zu viel Zeit .. Der Algorithmus oder der Code kann in zwei Minuten fertig sein, aber ich warte auf 15 Minuten, um alle Daten zu bekommen – AlKobtan

Antwort

0

jedes Mal, wenn ich eine neue txt-Datei mit dem Namen „data“ Creat tailed mit time.hour und time.minute

als @NicoSchertler für jede var in Lese mit bekommen var.value und var.key

dies ist der schnellste Weg

Dim file As System.IO.StreamWriter 
Dim path As String 
path = "C:\Users\Dr. Mohamed ElWakil\Desktop\data" & Now.Hour & Now.Minute & ".txt" 
file = My.Computer.FileSystem.OpenTextFileWriter(path, True) 

For Each var In read 
    file.WriteLine(var.Key & "," & var.Value) 
Next 

file.Close() 
1

jeden Wert in Excel Schreiben separat ist nur sehr langsam, hat eine gehen mit diesem:

Dim arr2D(100, 1) As String 
    For i = 0 To 100 
     arr2D(i, 0) = read.Item(read.Keys.ElementAt(i)) 
     arr2D(i, 1) = read.Keys.ElementAt(i) 
    Next 
    Dim oExcel As Object = CreateObject("Excel.Application") 
    Dim oWorkbook As Object = oExcel.Workbooks.Add 
    Dim oWorksheet As Object = oWorkbook.Worksheets(1) 
    Dim vRange As Object = oWorksheet.Range("A1") 
    vRange = vRange.Resize(UBound(arr2D, 1) + 1, UBound(arr2D, 2) + 1) 
    vRange.Formula = arr2D 
    vRange.Columns.autofit() 
    oExcel.Visible = True 
+0

Ich denke, das ist der beste Weg für Excel, ich habe es versucht , aber in eine TXT-Datei schreiben ist schneller als das und Kopieren von einem Wörterbuch zu einem zweidimensionalen Array verbraucht Zeit zu und ich habe versucht zu lesen, um ein zwei zu sein Dimensionale Array von Anfang an, aber ich muss es jedes Mal 'redim' und das braucht auch eine Zeit – AlKobtan

Verwandte Themen