2016-09-15 2 views
0

У меня есть цикл, который побегать 300000 раз на каждой итерации я хранимую:Каков самый быстрый способ получить данные с vb.net?

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

Наконец, я просто хочу, чтобы принимать значения read (словаря, конечно), чтобы нарисовать график на первенствует.

Я пытался экспортировать данные в Excel:

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 

и в текстовый файл:

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() 

В двух случаях это занимает слишком много времени, это больше, чем во время бега сам код.

Что вы предлагаете легко и быстро получить мои данные?

+1

Какой цикл занимает слишком много времени? В первом случае вы выполняете только 100 итераций, тогда как вторая будет делать 300 000. – SEFL

+2

Загрузка значения может быть операцией, которая занимает большую часть времени. Попробуйте выполнить итерацию с помощью 'foreach var pair in read'. Вы получите пару с ключом и значением, и вам не нужно запрашивать значение по ключу. –

+0

@SEFL, извлечение данных с помощью excel или текстового файла занимает слишком много времени. Алгоритм или код могут быть закончены в течение двух минут, но я продолжаю ждать около 15 минут, чтобы получить все данные – AlKobtan

ответ

0

каждый раз, когда я создам новый текстовый файл с именем «данными» хвостами с time.hour и time.minute

в @NicoSchertler, используя для каждого вар в чтении, чтобы получить var.value и var.key

это самый быстрый способ

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

Запись каждого значения отдельно для Excel просто очень медленно, имеет пойти с этим:

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

Я думаю, что это лучший способ для excel, я пробовал его , но запись в txt-файл быстрее, чем это, и копирование из словаря в массив из двух измерений тоже потребляет слишком , и я попробовал «читать», чтобы быть двумя мерного массива с самого начала, но я должен «переделывать» его каждый раз, и это занимает слишком много времени – AlKobtan

Смежные вопросы