我正在與一個非常大的csv文件,不斷增長。基本上,我的程序檢查是否存在特定的ID號碼。如果存在,則使用數組中的數據。如果它不存在,它會從互聯網上下載數據並將其添加到陣列中。VB.NET:大陣列 - 更快的選擇?
這裏是我的數組:
Public Shared ClientSideData(0 To 99999, 0 To 5) As String '"MLS Number","GLA","Latitude","Longitude","Year Built","Acreage","ClientSideNext"
這裏是一個CSV文件中的示例行:
"21633662","1631","40.298488","-74.052182","1950","0.1791"
這裏是很簡單的功能我用它來檢查,如果MLS#存在:
Function ClientSideLoc(mls As String) As Integer
For i = 0 To GlobalVariables.ClientSideCount - 1
If GlobalVariables.ClientSideData(i, 0) = mls Then
Return i
Exit Function
End If
Next
Return -1
End Function
CSV文件有時會每天添加500個條目。它正在快速增長。一旦它超過了10萬條,我現在的計劃就是回到原來的新條目。我有一種感覺,這種ClientSideLoc功能最終會比我每次從互聯網上下載缺失的信息的速度慢下來。
我很好奇,如果有更快的選擇?你會推薦什麼?數據庫會是更好的選擇嗎?我不熟悉它們。謝謝
使用像CSVHelper這樣的CSV解析工具將會更快更簡潔 - 數據可以存儲爲鍵入數據而不是轉換爲字符串。 – Plutonix
這可以有無限數量的條目?由於內存問題,我目前限制我的輸入爲100,000 – brand0
您當前的搜索與ClientSideData中的項目數量呈線性關係。以更多內存消耗爲代價,你可以在數組中添加一個'mls'索引到位置,例如使用'Dictionary(Of String,Integer)'。這將在大致不變的時間內完成查找。如果您使用數據庫並在與'mls'對應的字段上放置索引,那麼數據庫將會爲您加速查找。 – Craig