得到

2016-05-02 39 views
0

我只想來計算Dijkstra算法功能將作爲網絡節點在Q中得到

Do While True 
     Dim dist As Integer = Integer.MaxValue 
     For i = 1 To Q.Count 
      If Q.Item(i).dist < dist Then 
       dist = Q.Item(i).dist 
       u = Q.Item(i) 
      End If 
     Next i 
     If dist = Integer.MaxValue Then Exit Do 'no more nodes available - done! 
     Q.Remove(u.name_t) 
     'loop over neighbors of u that are in Q 
     For j = 1 To Q.Count 
      For Each train In trains 
       If train.src.name_t = u.name_t And train.dst.name_t = Q.Item(j).name_t Then 
        alt = u.dist + train.t 
        If alt < Q.Item(j).dist Then 
         Q.Item(j).dist = alt 
         Q.Item(j).prev = u 
        End If 
       End If 
      Next 
     Next 
    Loop 
+0

如果你想* *措施所花費的時間,你可以使用[秒錶類](https://開頭msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch%28v=vs.110%29.aspx)。或者你是否真的想計算處理器上單個步驟所花費的時間並將其加起來? –

+0

我沒有得到他們之間的差異,對不起,你能解釋更多 – AlKobtan

+0

如果你有一堵長18米的牆,你可以計算長度(磚的數量*每塊磚的長度+(磚的數量 - 1)*關節的大小)。磚的數量將代表指令的數量,磚的長度和關節的大小將代表每個指令所花費的時間。或者您可以用捲尺測量牆的長度,牆上代表代碼(您不需要知道磚和關節的個別尺寸),而捲尺代表運行代碼的時間。 –

回答

1

嘗試用這種

Dim starttime As DateTime 
Dim endtime As DateTime 
Dim elapsed As Double 
starttime = Format(Now(), "hh:mm:ss") 'beginning 
'your code here 
endtime = Format(Now(), "hh:mm:ss") 'end 
Elapsed = DateDiff("s", starttime, endtime) 
MsgBox("Finished in " & Elapsed & " seconds") 

**編輯2 **

Sub time() 
    startTime = Timer 
    endtime = Timer 
    totalTime = Format(finishTime - startTime, "ss") 
End Sub 
+0

如果它工作,請將其標記爲解決方案 –

+0

它的工作原理感謝您,它可以產生毫秒 – AlKobtan

+0

謝謝我修改它的部分秒..非常感謝您的幫助 – AlKobtan

0

獲取前的系統日期時間來計算源節點路徑最短的時間採取的Dijkstra功能的時間並在函數執行後,然後計算差異。